是否比.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和其他无关的东西。。。

  1. 有没有一种更快的方法来检查是否存在某种东西,然后采取它。

  2. 我还想知道FirstOrDefault()是否能帮助我的案子,它是如何工作的?

是否比.Any()更快来检查该条件

是的,FirstOrDefault在这里更好:

oneArticle = db.ARTICLE.FirstOrDefault(t => t.condition == condition);

基本上Any将进行一次选择,然后First将再进行一次。而FirstOrDefault将执行与First相同的操作,并且在没有输出的情况下仅返回null,从而消除了运行另一个选择操作的需要。

是的,FirstOrDefault将更快,因为它只查询一次。它的工作方式是,如果没有可用行,它将返回null,如果有可用行,则根据您应用的任何排序(如果有的话)返回第一行。