什么是检查IEnumerable Count的最快方法是大于零而没有循环遍历所有记录

时间:2011-04-29 23:14:41

标签: c# ienumerable

我知道每个人都说避免做这样的事情因为它很慢(只是为了找出是否有0)

  IEnumerable<MyObject> list;
  if (list.Count() > 0)
  { 
  }

但是,当我需要做的是找出列表是否为0或者是否有项目时,最好的选择是什么

3 个答案:

答案 0 :(得分:11)

使用list.Any()。如果找到元素,则返回true。实施明智,它将是:

using (var enumerator = list.GetEnumerator())
{
  return enumerator.MoveNext();
}

答案 1 :(得分:0)

这样的事情对你有用:

public static IsEmpty(this IEnumerable list)
{
    IEnumerator en = list.GetEnumerator();
    return !en.MoveNext();
}

刚开始枚举,如果你可以移动到第一个项目,它就不是空的。此外,您可以检查IEnumerable是否也实现ICollection,如果是,则调用其.Count属性。

答案 2 :(得分:0)

同时检查null并计为if (!list.IsNullOrEmpty()) { ... }

/// <summary>
/// Returns true if collection is null or empty.
/// </summary>
public static bool IsNullOrEmpty<T>(this IEnumerable<T> source)
{
    return source == null || !source.Any();
}