gpt4 book ai didi

linq - lambda 比 linq 查询快吗?

转载 作者:行者123 更新时间:2023-12-01 09:32:59 24 4
gpt4 key购买 nike

我正在玩 lambda、linq 和 parallel,一个问题来了。

lambda 比 linq 查询快吗?

O 编写一些测试代码 (Fork it in GitHub) 并且 lambda 方法似乎更快。这是真的还是我遗漏了什么?

最佳答案

您的查询不一样。

查询表达式:

from p in lista 
where p.Age > 18 && p.Age < 60 && p.Phone.StartsWith("11")
select p

常规扩展方法调用:

.Where(n => n.Age > 18).
Where(n => n.Age < 60).
Where(n => n.Phone.StartsWith("11"))

第一个调用Where once;第二个调用 Where 三次。要使它们的行为完全相同,您应该使用:

.Where(n => n.Age > 18 && n.Age < 60 && n.Phone.StartsWith("11"))

此时,这两个表单将编译为完全相同的代码。

此外,您的测试中还有一个 巨大 漏洞:您正在测试 构建 查询...您从未真正评估它:

sw.Start();
IEnumerable listaSemParalelismoLinq = from p in lista
where p.Age > 18 && p.Age < 60 &&
p.Phone.StartsWith("11")
select p;
sw.Stop();

必须以某种形式使用查询,例如在其上调用 Count() 以使其真正“执行”。 (您需要将类型更改为通用的 IEnumerable 形式,例如使用 var。)在几乎所有情况下,简单地构造查询所花费的时间基本上是无关紧要的。

关于linq - lambda 比 linq 查询快吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12941514/

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