选择与实体关联的不同

本文关键字:关联 实体 选择 | 更新日期: 2023-09-27 18:16:04

关于这里问的问题的扩展,我正在尝试做相同的功能,即

IEnumerable<Customer> filteredList = originalList
  .GroupBy(customer => customer.CustomerId)
  .Select(group => group.First());

在评论中,这是暗示,这将不起作用,如果它是Linq到实体,当然不是为我工作,我得到一个空的结果集。

不适合我!即使我尝试了'FirstOrDefault',它也不起作用。- JatSing Sep 25 '11 at 13:55

@JatSing:你一定是在使用Linq to Entities。- Josh Mouch Feb 14 '12 at 14:45

所以,如果上面不工作Linq到实体,我该如何去分组一个IEnumerable的EntityType消息集由两列,然后得到每组的第一行?

选择与实体关联的不同

如果你对LINQ表达式如何通过实体框架等进行评估有问题,你可以调用.ToList()来强制将查询实现到内存中以进行进一步处理。如果从数据库或其他来源获取结果非常昂贵,并且可以首先进一步缩小范围,那么这就不太理想了。

IEnumerable<Customer> filteredList = originalList
  .ToList()
  .GroupBy(customer => customer.CustomerId)
  .Select(group => group.First());

.ToList()调用使实体框架从数据库中加载完整的originalList(我假设是某种类型的IQueryable<T>),允许.GroupBy(...)在内存中评估originalList的完整结果,而不是作为SQL查询EF构建的一部分。