我想知道 LINQ Where() 是如何实现的。它是否对集合执行简单的线性搜索?或者有没有优化?
最佳答案
简短回答:视情况而定。
更长的答案:LINQ 的目的是允许开发人员表达查询的意图,而不必提供如何执行查询。我们可以对几乎任何可以表示为集合的事物使用相同的查询语法。
对于 LINQ to Objects,它目前只是执行您描述的操作 - 序列的线性遍历。在幕后,LINQ 可以使用 IQueryProvider
将如何推迟到更复杂的实现。
提供者的工作是将查询(例如,Where(predicate)
)转换为实际执行的代码。对于 Entity Framework 中的 LINQ to SQL 或 LINQ to Entities 之类的东西,它将查询转换为 SQL 并执行。
所以在基本层面上,这个想法是“无关紧要”它是如何工作的——它应该通过更具声明性的方式编写查询来帮助开发人员提高工作效率。但查找您正在使用的特定 LINQ 提供程序的文档很有帮助,这样您就可以了解如何最有效地利用它。
关于c# - .Network 中的 LINQ Where() 子句如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23408686/