c# - .Network 中的 LINQ Where() 子句如何?

标签 c# .net linq search where-clause

我想知道 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/

相关文章:

c# - SqlParameter Size - 设置为最大大小的负面影响?

c# - 如何访问C#项目目录

c# - 我可以防止无效的小型转储文件名吗

c# - 带有投影比较器的 LINQ OrderBy 匿名对象

c# - 无法编译包含泛型和内部类的代码

c# - Entity Framework 不使用用户默认模式

c# - .Net MVC认证方式

.net - 无法通过 MySQL 连接连接到 Sphinx

c# - 合并两个 linq 语句并删除重复项

c# - Linq - 分组然后比较每个组内的元素