1

我正在将旧代码转换为使用 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
                };

不过,我遇到的问题是尝试将查询结果放入列表中。有人可以给我一些指示吗?

谢谢!

4

5 回答 5

4

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

于 2013-08-28T14:59:25.713 回答
2

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

于 2013-08-28T14:59:34.617 回答
2

将整个查询括在括号中并.ToList()在末尾添加。

或者添加另一行:

var list = query.ToList();
于 2013-08-28T14:59:55.057 回答
1

你需要做两件事。

首先,将您更改select为创建一个新实例Comment而不是匿名类型。

其次,要么将整个查询包装在调用中,ToList()要么将结果存储在临时变量中,然后调用ToList()该变量以获取List<Comment>结果。

于 2013-08-28T15:01:50.673 回答
1

(A) 用 包裹整个调用Enumerable.ToList(<your query>),(B) 用括号括住整个查询并ToList在末尾调用扩展方法,或者 (C)query.ToList()作为单独的语句调用。

于 2013-08-28T15:02:00.903 回答