GroupBy之后在本地评估ToDictionary

时间:2019-04-15 11:19:15

标签: c# entity-framework-core

我有以下Entity Framework Core查询:

var result = await products
  .Select(x => new { 
    PackageId = x.PackageId, 
    Price = x.Price 
  })
  .GroupBy(x => x.PackageId)
  .Select(x => new { 
    PackageId = x.Key,
    TotalPrice = x.Sum(y => y.Price) 
  })
  .ToDictionaryAsync(x => x.PackageId, x => new Model { 
    TotalPrice = x.TotalPrice 
  });

我能够使该查询在服务器上评估。

有没有一种方法可以简化它,并且仍然确保它可以在服务器上评估?

1 个答案:

答案 0 :(得分:0)

尝试一下。

var result = await products
  .GroupBy(x => x.PackageId)
  .Select(x => new { 
    PackageId = x.Key,
    TotalPrice = x.Sum(y => y.Price)
  })
  .ToDictionaryAsync(x => x.PackageId, x => new Model { 
    TotalPrice = x.TotalPrice 
  });

EF将注意不要加载不必要的数据。