我一直在寻找一种方法,使用更快的EF查询来执行以下操作:
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
// I want to send text to form1 when this button is clicked
}
}
它工作正常,但我添加的越多,感觉就越慢。 它看起来好像经历了所有行2次(我不知道是不是这样)
我一直在搜索,看到有人使用 using (DAL.MandatsDatas db = new DAL.MandatsDatas())
{
if(db.ARTICLE.Any( t => t.condition == condition))
oneArticle = db.ARTICLE.First( t => t.condition == condition);
}
和其他无关的东西......
是否有更快的方法来检查某些是否存在然后接受它。
此外,我想知道count() > 0
是否有助于我的案例,它是如何运作的?
答案 0 :(得分:7)
是的,FirstOrDefault
在这里更好:
oneArticle = db.ARTICLE.FirstOrDefault(t => t.condition == condition);
基本上Any
会做一次选择,然后First
会再做一次。虽然FirstOrDefault
会执行相同的First
,但如果没有输出则只返回null
,因此无需再运行其他选择操作。
答案 1 :(得分:2)
是的,FirstOrDefault会更快,因为它只会查询一次。它的工作方式是,如果没有可用的行,它将返回null
,如果有可用的行,它将根据您应用的任何顺序返回第一行(如果有的话)。