在LINQ中,.Any <>和.Where <>之间的主要区别/用途是测试记录是否存在

Nei*_*ick 2 .net linq

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

之间存在很大差异:

MyDatabaseContext.Customers.Any(c => c.CustomerId == 3)
Run Code Online (Sandbox Code Playgroud)

MyDatabaseContext.Customers.Where(c => c.CustomerId == 3)
Run Code Online (Sandbox Code Playgroud)

.Any <> - 返回类型bool

.Where <> - 返回类型IQueryable

编辑:在接受FredrikMörk的回答后更正了问题措辞 - 谢谢.

Fre*_*örk 15

再次检查文档:

  • Any<>返回bool指示是否至少有一个项目符合条件
  • Where<>返回IEnumerable包含符合条件的项目

Any一旦它可以确定结果(当它找到匹配的项目时),那么停止可能存在性能差异,而Where在返回结果之前需要始终循环所有项目.因此,如果您只需要检查是否有任何匹配的项目,Any将是该作业的方法.