问题asked here的扩展,我正在努力做同样的功能,即
IEnumerable<Customer> filteredList = originalList
.GroupBy(customer => customer.CustomerId)
.Select(group => group.First());
在评论中,暗示如果它是Linq to Entities并且当然不适用于我,这将无法工作,我得到一个空结果集。
对我不起作用!即使我尝试'FirstOrDefault'它也没有用。 - JatSing 2011年9月25日13:55
@JatSing:您必须使用Linq to Entities。 - Josh Mouch 12年12月14日14:45
因此,如果以上内容对Linq to Entities不起作用,我将如何分组由两列组成的EntityType消息的IEnumerable,然后获取每个组的第一行?
答案 0 :(得分:0)
如果您对通过实体框架等评估LINQ表达式的方式存在问题,可以调用.ToList()
强制将查询实现到内存中以进行进一步处理。如果您从数据库或其他来源获得的结果非常昂贵,并且可以先进一步缩小,那么这不太理想。
IEnumerable<Customer> filteredList = originalList
.ToList()
.GroupBy(customer => customer.CustomerId)
.Select(group => group.First());
.ToList()
调用使实体框架从数据库加载完整的originalList
(我假设它是某种类型的IQueryable<T>
),允许.GroupBy(...)
进行评估内存取决于originalList
的完整结果,而不是SQL查询EF构建的一部分。