FindAll Vs在哪里
这个问题在这里已经有了答案:
你可以在这里找到你的答案: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