FirstOrDefault(), SingleOrDefault(), Any(), etc… Which One Is The Fastest?
在两个以上regards和/或其他方法包括,如果你在搜索一条记录,记录是否一只,这将是一fastest perform吗?例如,我想确保这一次它的价值被认定queried,我在寻找一个好的回报,将网络中的搜索通没有剩余的记录。
如果你想一想,你可能会想出来的。
这意味着
编辑:
任何一个都可以更快地实现。协调SQL实现:
1 | Select Top 1 from myTable //(its not quite this but this implementation but it will be similar) |
执行速度将超过:
1 | Select Top 1 from myTable where <somecondition> |
只有当您希望在结果为0或多个时强制执行异常时,才应使用single(和singleOrDefault)。典型的SQL实现是
1 | Select Top 2 * from table |
另一方面,第一次匹配后通常会短路。在TSQL
1 | Select Top 1 * from table |
Any用于指示是否找到至少一个匹配项(找到后短路)。在TSQL中,它使用exists。
在您的情况下,由于您需要结果值,所以在单独发出请求(使用any)然后执行single时没有任何用处。相反,只需使用first或default,然后检查返回结果是否为空。
1 2 3 | var foo = table.FirstOrDefault(t => t.bar == val); if (null != foo) ... |
从存在的表中选择1