何时在 LINQ 中使用 lambda 表达式而不是Where子句

发布于 2024-07-25 20:19:25 字数 234 浏览 0 评论 0原文

我一直在深入研究 LINQ,并且正在尝试解决这个 lambda 表达式业务。 我只是没有看到语法的一些细微差别的好处。 首先,在我看来,lambda 表达式主要只是使用Where 子句的一种不同方式。 那么为什么我不直接使用Where 子句呢? lambda 表达式效率更高吗?

这是否只是另一种语法上的补充,以吸引其他群体的程序员对 C# 感到更舒服? 我还没有接触过 lambda 表达式还有其他更好的用例吗?

I've been really digging into LINQ, and I'm trying to hash out this lambda expression business. I'm just not seeing the benefit of some of the nuances of the syntax. Primarily, it seems to me that a lambda expression is mostly just a different way of using a Where clause. Why wouldn't I just use a Where clause then? Is the lambda expression more efficient?

Is it just another syntactical addition to draw programmers from another group to feel more comfortable in C#? Are there other better use cases for lambda expressions that I just haven't exposed to yet?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

八巷 2024-08-01 20:19:25

看一下这篇文章: LINQ 查询语法与方法语法

一般来说,我们推荐查询语法
因为它通常更简单、更多
可读; 然而没有语义
方法语法和之间的区别
查询语法。 此外,一些
查询,例如检索
匹配 a 的元素数量
指定条件,或检索
具有最大值的元素
在源序列中,只能是
表示为方法调用。 这
的参考文档
标准查询运算符
System.Linq命名空间一般使用
方法语法。 因此,即使当
开始编写 LINQ 查询,
熟悉如何
在查询和中使用方法语法
查询表达式本身。

还有这个问题:LINQ:点表示法与查询表达式

Take a look at this article: LINQ Query Syntax versus Method Syntax
:

In general, we recommend query syntax
because it is usually simpler and more
readable; however there is no semantic
difference between method syntax and
query syntax. In addition, some
queries, such as those that retrieve
the number of elements that match a
specified condition, or that retrieve
the element that has the maximum value
in a source sequence, can only be
expressed as method calls. The
reference documentation for the
standard query operators in the
System.Linq namespace generally uses
method syntax. Therefore, even when
getting started writing LINQ queries,
it is useful to be familiar with how
to use method syntax in queries and in
query expressions themselves.

And also this question: LINQ: Dot Notation vs Query Expression

情未る 2024-08-01 20:19:25

请阅读此内容。 您的 LINQ 查询将在运行时由编译器转换为 Lambda 表达式。

Read this. Your LINQ queries will get turned into Lambda expressions by the compiler at run time.

情愿 2024-08-01 20:19:25

在内部,编译器会将查询语法转换为更明确的 lambda 语法。 这两种风格都没有固有的性能提升,并且大多数情况下生成的代码几乎与人们手动输入的代码相同。

主要区别在于,使用 lambda 语法,您可以链接任何运行并返回 IEnumerable的扩展方法。 使用查询语法,您只能使用该语言明确支持的特定扩展方法(因语言而异)。

真正使用或不使用查询语法实际上是个人喜好的问题。

Internally, the compiler will translate the query syntax into the more explicit lambda syntax. There is no inherent performance gain for either style and the generated code for most scenarios is almost identical to what people type out by hand.

The main difference is that with the lambda syntax you can chain in any extension method operating off and returning and IEnumerable<T>. With the query syntax, you are limited to the particular extension methods explicitly supported by the language (varies between language)

Really using or not using the query syntax is really a matter of personal preference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文