【发布时间】:2012-03-03 15:58:40
【问题描述】:
如何使用 lambda 表达式将此 linq 查询重写为实体?
我想在我的 lambda 表达式中使用 let 关键字或等效关键字。
var results = from store in Stores
let AveragePrice = store.Sales.Average(s => s.Price)
where AveragePrice < 500 && AveragePrice > 250
对于一些类似的问题,比如我的问题下评论了什么,建议
.Select(store=> new { AveragePrice = store.Sales.Average(s => s.Price), store})
它将计算每个项目的AveragePrice,而在我提到的查询样式中,let 表达式会阻止多次计算平均值。
【问题讨论】:
-
@Eranga:那个问题,Marc 为每个项目选择了 animalName.Length。在这里,我不想为每个项目计算所有项目的平均值。
-
@Reza:每个商店对象只计算一次平均值,与您的查询完全相同...
标签: linq entity-framework c#-4.0 lambda let