将LINQ查询结果导入列表?

时间:2013-08-28 14:57:53

标签: asp.net sql linq

我正在转换旧代码以使用LINQ。旧代码看起来像这样:

// Get Courses
sqlQuery = @"SELECT Comment.Comment, Status.StatusId, Comment.DiscussionBoardId, DiscussionBoard.CourseId, Comment.CommentID
            FROM Status INNER JOIN Comment ON Status.StatusId = Comment.StatusId INNER JOIN
                DiscussionBoard ON Comment.DiscussionBoardId = DiscussionBoard.DiscussionBoardId
            WHERE  (DiscussionBoard.CourseID = 'CourseID')";

var comments = new List<Comment>(dataContext.ExecuteQuery<Comment>(sqlQuery));

我已将上述SQL转换为LINQ:

var db = new CMSDataContext();
var query = from c in db.Comments
                join s in db.Status on c.StatusId equals s.StatusId
                join d in db.DiscussionBoards on c.DiscussionBoardId equals d.DiscussionBoardId
                where d.CourseId == "CourseID"
                select new      
                {
                    d.ItemType,
                    c.Comment1,
                    s.Status1,
                    c.DiscussionBoardId,
                    d.CourseId,
                    c.CommentID
                };

我遇到的问题是尝试将查询结果导入List。有人可以给我一些指示吗?

谢谢!

5 个答案:

答案 0 :(得分:4)

尝试在查询结尾处添加ToList()方法。

答案 1 :(得分:2)

ToList方法怎么样:query.ToList()

答案 2 :(得分:2)

将整个查询括在括号中,并在最后添加.ToList()

或添加另一行:

var list = query.ToList();

答案 3 :(得分:1)

你需要做两件事。

首先,更改您的select以创建Comment的新实例,而不是匿名类型。

其次,要么将整个查询包装在ToList()的调用中,要么将结果存储在临时变量中,并在该变量上调用ToList()以获得List<Comment>。< / p>

答案 4 :(得分:1)

(A)用Enumerable.ToList(<your query>)包围整个通话,(B)用括号括起整个查询并在结尾调用ToList扩展方法,或者(C)调用{{1}作为单独的陈述。