linq.Any()
的一个优点是,一旦返回第一个结果,它就会短路,O(1)也不是O(n)。
如果我想检查Linq.Count() > n
n
&gt; 1,什么是短路表达式的最佳方法,以便当Linq.Count()接近n时它不会显着减慢速度,但是当Linq.Count()很大时它会加速。< / p>
答案 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;
}
}