我知道每个人都说避免做这样的事情因为它很慢(只是为了找出是否有0)
IEnumerable<MyObject> list;
if (list.Count() > 0)
{
}
但是,当我需要做的是找出列表是否为0或者是否有项目时,最好的选择是什么
答案 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();
}