gpt4 book ai didi

.net - 在 LINQ 中有什么可能而不是 Lambda 吗?

转载 作者:行者123 更新时间:2023-12-04 23:28:31 25 4
gpt4 key购买 nike

我正在考虑 .net 项目(c 语言)的代码标准,我个人非常喜欢在 IEnumerable 等(Where、GroupBy、blah、blah)的各种扩展方法中使用 lambda 表达式,并且不太喜欢 LINQ 语法.

我知道这是个人喜好,所以我不是在问哪个最好,但对我和我的团队来说,我们倾向于发现 lambda 方法更易于阅读。所以我想在我们的编码标准中说总是使用 Lambda 方法,但我开始思考......

有什么只能使用 LINQ 语法来实现的吗?我的意思是,您可以使用 LINQ 构建特定的表达式树,而您根本无法将扩展方法与 lambda 表达式一起使用。我认为答案是否定的,因为 resharper 和 linqpad 之类的工具能够在它们之间进行转换,而且我已经能够计算出我在 lambda 中需要的所有东西,但我想知道是否有聪明人在某处的边缘情况这里知道吗?

最佳答案

“可能”和“方便”是不同的;p 一切皆有可能; LINQ 语法最终会编译为 lambda 语法,并且在 LINQ 语法中不可能使用扩展语法(例如,C# 中的 Distinct(),尽管它存在于 VB.NET LINQ 中)。

然而!当你有很多 变量 在 LINQ 查询中,映射很麻烦,因为您需要对中间对象(可能是匿名类型)进行大量附加投影;例如,尝试编写(使用 lambda 语法):

var query = from x in xSource
from y in x.SomeCollection
from z in zSource
let foo = x.Foo + z.SomeMethod()
order by foo
select new {x,y,z,foo};

它是 可能 ,但坦率地说是 PITA。

关于.net - 在 LINQ 中有什么可能而不是 Lambda 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8613637/

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