我正在转换旧代码以使用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。有人可以给我一些指示吗?
谢谢!
答案 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}作为单独的陈述。