FindAll Vs在哪里

这个问题在这里已经有了答案:

  • LINQ,Where()与FindAll()4的答案

  • 你可以在这里找到你的答案:LINQ,Where()和FindAll()。 基本上如果你在你的“Where”中调用.ToList(),它们将是相同的。

    您可以找到有关延迟执行和立即执行之间差异的更多信息:https://code.msdn.microsoft.com/LINQ-Query-Execution-ce0d3b95


    我最好的猜测是在调用Where的时候发生了什么,它创建一个枚举器,并在代码中实际使用结果的地方(例如实际调用该枚举器的MoveNext和(get_)Current,例如从ToList)。


    是的,哪里是findall的懒惰版本。 FindAll()是List类型的函数,它不是像Where那样的LINQ扩展方法。 List上的FindAll方法,它是一个返回具有相同元素类型的新List的实例方法。 FindAll只能用于List实例,而LINQ扩展方法适用于实现IEnumerable的任何类型。

    主要区别(除了实现它们之外:IEnumerable与List)是Where实现延迟执行,直到你需要它时才实际执行查找(例如,在foreach循环中使用它)。 FindAll是立即执行的方法。

    我将引用称为表达式树的数据结构来理解延迟执行,您只需要掌握表达式树是像列表或队列那样的数据结构。 它包含LINQ to SQL查询,而不是查询结果,但查询本身的实际元素。

    为了理解在Where工作,我们需要看到,如果我们写一个代码

    var query = from customer in db.Customers  
            where customer.City == "Paris"
            select customer;              
    

    查询不会在这里执行,而是在foreach循环中执行

    了解LINQ和延期执行

    链接地址: http://www.djcxy.com/p/88211.html

    上一篇: FindAll Vs Where

    下一篇: Select2 default options with ajax