是否比.Any()更快来检查该条件
本文关键字:检查 条件 Any 是否 | 更新日期: 2023-09-27 18:24:50
我一直在寻找一种更快的EF查询方法:
using (DAL.MandatsDatas db = new DAL.MandatsDatas())
{
if(db.ARTICLE.Any( t => t.condition == condition))
oneArticle = db.ARTICLE.First( t => t.condition == condition);
}
它很好用,但我加的越多,感觉就越慢。它只是看起来像是通过了所有的行2次(我不知道是不是这样)
我一直在搜索,看到有人在使用count() > 0
和其他无关的东西。。。
有没有一种更快的方法来检查是否存在某种东西,然后采取它。
我还想知道
FirstOrDefault()
是否能帮助我的案子,它是如何工作的?
是的,FirstOrDefault
在这里更好:
oneArticle = db.ARTICLE.FirstOrDefault(t => t.condition == condition);
基本上Any
将进行一次选择,然后First
将再进行一次。而FirstOrDefault
将执行与First
相同的操作,并且在没有输出的情况下仅返回null
,从而消除了运行另一个选择操作的需要。
是的,FirstOrDefault将更快,因为它只查询一次。它的工作方式是,如果没有可用行,它将返回null
,如果有可用行,则根据您应用的任何排序(如果有的话)返回第一行。