.net - 在 LINQ 中,.Any<> 和 .Where<> 测试记录存在性的主要区别/用途是什么

标签 .net linq

例如,如果我有一个 Linq to SQL 数据上下文,或者如果我有映射到数据库表的 ADO.NET Entity Framework 实体,并且我想测试单个客户...

有很大区别吗:

MyDatabaseContext.Customers.Any(c => c.CustomerId == 3)

MyDatabaseContext.Customers.Where(c => c.CustomerId == 3)

.Any<> - 返回类型 bool

.Where<> - 返回类型 IQueryable

编辑:接受 Fredrik Mörk 的回答后更正问题措辞 - 谢谢。

最佳答案

再次查看文档:

  • Any<> 返回 bool表明至少一项是否符合标准
  • Where<> 返回 IEnumerable包含符合条件的项目

Any 可能存在性能差异一旦确定结果(当它找到匹配项时)就会停止,而 Where在返回结果之前将需要始终遍历所有项目。所以如果只需要检查是否有匹配项,Any将是工作的方法。

关于.net - 在 LINQ 中,.Any<> 和 .Where<> 测试记录存在性的主要区别/用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1404039/

相关文章:

C# string.Replace 用于删除 �?

c# - 监视 Windows 上字体的安装/卸载

c# - Linq 查询产生不正确的结果

c# - .NET 核心 : Array class does not contain definition for ConvertAll

c# - Azure Functions V1 DI 的依赖项注入(inject)

c# - 在 msxsl 中使用程序集和命名空间的问题

c# - 动态构建的 LINQ 查询会根据其构建方式提供不一致的结果

c# - 在 Linq 查询中使用 if 语句

linq - 是否可以在没有LINQ的情况下使用 Entity Framework ?

c# - .NET 内存不足异常 - 使用 1.3GB 但安装了 16GB