Performance 如何使用LINQ获取前两个引用?

Performance 如何使用LINQ获取前两个引用?,performance,linq,entity-framework-4,Performance,Linq,Entity Framework 4,我需要知道满足条件的元素数量,因此我执行以下操作: int numberOfItems = context.SomeEntity.Count(someCondition); 但由于我只需要检查numberOfItems是否且仅当numberOfItems正好为1,因此我希望改进此查询,并在前两次出现满足条件时停止计数项,从而提高效率(当遇到满足条件的前两次出现时,无需继续检查)。执行以下操作: bool existsOnlyOne = context.SomeEntity.... 如何实现这

我需要知道满足条件的元素数量,因此我执行以下操作:

int numberOfItems = context.SomeEntity.Count(someCondition);
但由于我只需要检查numberOfItems是否且仅当numberOfItems正好为1,因此我希望改进此查询,并在前两次出现满足条件时停止计数项,从而提高效率(当遇到满足条件的前两次出现时,无需继续检查)。执行以下操作:

bool existsOnlyOne = context.SomeEntity....

如何实现这一点?

您可以将条件更改为

bool existsOnlyOne = context.SomeEntity.Where(someCondition).Take(2).Count() == 1;
如果您有两个以上的项,那么第三个项之后的项将被
Take(2)
方法忽略。

根据经验,Single()方法是实现这一点的最快方法之一,但这将涉及异常驱动的开发(这将很糟糕)。您可以打开Single()的代码,看看您找到了什么。