【问题标题】:How to get first two occurrences using LINQ?如何使用 LINQ 获得前两次出现?
【发布时间】:2013-06-03 09:00:33
【问题描述】:

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

int numberOfItems = context.SomeEntity.Count(someCondition);

但由于我只需要检查 numberOfItems 是否且仅当 numberOfItems 恰好为 1,因此我想改进此查询并通过在前两次出现满足条件时停止计数项目来提高效率(遇到前 2 次出现时)满足条件的,无需继续检查)。执行类似的操作:

bool existsOnlyOne = context.SomeEntity....

如何做到这一点?

【问题讨论】:

  • 根据经验,Single() 方法是实现这一目标的最快方法之一,但这会涉及异常驱动的开发(这会很糟糕)。你可以破解 Single() 的代码,看看你发现了什么。

标签: performance linq entity-framework-4


【解决方案1】:

您可以将条件更改为

bool existsOnlyOne = context.SomeEntity.Where(someCondition).Take(2).Count() == 1;

如果您有两个以上的项目,则 Take(2) 方法将忽略第三个之后的项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多