【发布时间】:2020-04-11 22:48:01
【问题描述】:
我在 LINQ to SQL 语句中使用 group by 时遇到问题。
我的鳕鱼是
var combinedItems = (from article in articles
join author in authors
on article.AuthorId equals author.Id into tempAuthors
from tempAuthor in tempAuthors.DefaultIfEmpty()
select new { article , author = tempAuthor});
var groups1 = (from combinedItem in combinedItems
group combinedItem by combinedItem.article into g
select g.Key).ToList();
var groups2 = (from combinedItem in combinedItems
group combinedItem by combinedItem.article.Id into g
select g.Key).ToList();
我尝试以两种不同的方式进行分组。第一种方式,我按一个对象分组,第二种方式我只是按其中一个对象中的一个字段分组。
当我运行groups1 时,我收到一条错误消息,提示需要在客户端进行评估,而当我使用groups2 时,一切正常。我能问一下有什么问题吗?如果我想按对象分组,有什么办法吗?
【问题讨论】:
-
我认为你不能直接按对象分组,但是如果你根据初始对象的所有属性构建一个匿名对象,就可以了,比如:
group combinedItem by new{combinedItem.article.Id,combinedItem.article.Name,...} into g
标签: c# .net linq linq-to-sql