LINQ与匿名Lambda性能:何时使用每个

ash*_*999 1 linq performance lambda

我喜欢匿名的lambdas; 它们让您简明扼要地表达列表中的复杂选择.LINQ做了类似的事情,所以我想我会尝试一下(最后).

作为经常使用lambdas选择集合子集的人,我何时应该使用LINQ?何时应该使用lambdas?这样一个问题,表现出10-100倍的性能差异.

Jim*_*mmy 5

LINQ评估被推迟.表达式primesnumbers.Where(n => isOddAndNotDivisibleBy(n))编译器相同.在这两种情况下,isOddAndNotDivisibleBy在某些事情评估表达式的结果之前,永远不会调用它.在这种情况下,ToArray中间cb强制评估.如果你在a和之间添加ToArray b,你会得到相似的时间.

为了比较你可以尝试:

var primes = (
    from n in numbers
    where isOddAndNotDivisibleBy(n)
    select n).ToArray();
Run Code Online (Sandbox Code Playgroud)