(计数> 1)的短路Linq

时间:2018-05-03 07:55:38

标签: c# linq

linq.Any()的一个优点是,一旦返回第一个结果,它就会短路,O(1)也不是O(n)。

如果我想检查Linq.Count() > n n&gt; 1,什么是短路表达式的最佳方法,以便当Linq.Count()接近n时它不会显着减慢速度,但是当Linq.Count()很大时它会加速。< / p>

2 个答案:

答案 0 :(得分:5)

我用过

Linq.Skip(n).Any();

如果您知道没有元素为null,则可以使用

Linq.ElementAtOrDefault(n) != null

虽然我不知道这是否会有任何速度优势。

答案 1 :(得分:3)

您可以随时将其编写为扩展程序

public static class EnumerableExtensions
{
    public static bool HasAtLeast<T>(this IEnumerable<T> enumerable, int n)
    {
        var i = 0;
        foreach(var item in enumerable)
        {
          if(++i == n)
              return true;
        }
        return false;
    }
}

实例:http://rextester.com/IMIJ79900