gpt4 book ai didi

linq - 如何在 lambda 表达式中输入 "let"?

转载 作者:行者123 更新时间:2023-12-03 07:16:43 26 4
gpt4 key购买 nike

如何使用 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 表达式可以防止多次计算平均值。

最佳答案

因此,您可以使用扩展方法语法,这将比您当前使用的多一个 lambda 表达式。没有 let,您只需使用多行 lambda 并声明一个变量:

var results = Stores.Where(store => 
{
var averagePrice = store.Sales.Average(s => s.Price);
return averagePrice > 250 && averagePrice < 500;
});

请注意,我更改了平均价格比较,因为您的价格永远不会返回任何结果(大于 500 且小于 250)。

替代方案是

var results = Stores.Select(store => new { Store = store, AveragePrice = store.Sales.Average(s => s.Price})
.Where(x => x.AveragePrice > 250 && x.AveragePrice < 500)
.Select(x => x.Store);

关于linq - 如何在 lambda 表达式中输入 "let"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9240375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com