时,最好的替代方法是什么呢?
我知道每个人都说要避免这样做,因为它非常慢(只是为了找出是否有0)
IEnumerable<MyObject> list;
if (list.Count() > 0)
{
}
但是当我需要做的只是找出列表的计数是否为0或者其中是否有项目
使用list.Any()
。如果找到元素,则返回true。在实现方面,它应该是:
using (var enumerator = list.GetEnumerator())
{
return enumerator.MoveNext();
}
像这样的东西应该为您工作:
public static IsEmpty(this IEnumerable list)
{
IEnumerator en = list.GetEnumerator();
return !en.MoveNext();
}
开始枚举,如果你能移动到第一项,它就不是空的。此外,您还可以检查IEnumerable是否也实现了ICollection,如果是,则调用它的. count属性。
同时检查是否为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();
}