相关疑难解决方法(0)

如何检查IEnumerable是空还是空?

我爱string.IsNullOrEmpty方法.我很想拥有能够为IEnumerable提供相同功能的东西.有这样的吗?也许一些收集助手班?我问的原因是,在if语句中,如果模式是代码,代码看起来很混乱(mylist != null && mylist.Any()).拥有它会更加清洁Foo.IsAny(myList).

这篇文章没有给出答案:IEnumerable是空的?.

.net c# linq collections ienumerable

144
推荐指数
9
解决办法
18万
查看次数

使用LINQ检查列表是否为空

什么是"最佳"(考虑到速度和可读性)的方式来确定列表是否为空?即使列表是类型IEnumerable<T>且没有Count属性.

现在我在这之间折腾:

if (myList.Count() == 0) { ... }
Run Code Online (Sandbox Code Playgroud)

还有这个:

if (!myList.Any()) { ... }
Run Code Online (Sandbox Code Playgroud)

我的猜测是第二个选项更快,因为它会在看到第一个项目后立即返回结果,而第二个选项(对于IEnumerable)将需要访问每个项目以返回计数.

话虽如此,第二个选项看起来是否可读?你更喜欢哪个?或者你能想出一个更好的方法来测试空列表吗?

编辑 @ lassevk的响应似乎是最合乎逻辑的,再加上一些运行时检查,如果可能的话,使用缓存计数,如下所示:

public static bool IsEmpty<T>(this IEnumerable<T> list)
{
    if (list is ICollection<T>) return ((ICollection<T>)list).Count == 0;

    return !list.Any();
}
Run Code Online (Sandbox Code Playgroud)

.net c# linq list

122
推荐指数
5
解决办法
13万
查看次数

标签 统计

.net ×2

c# ×2

linq ×2

collections ×1

ienumerable ×1

list ×1