首页 / C#开发 / 正文

[LINQ].NET/C#程序开发中如何如何检查一个集合是否为空?

5937 发布于: 2018-03-08 读完约需3分钟

问题描述

在.NET/C#的程序开发中,如果需要判断一个集合是否为空(或者说是否有元素),我们常用的方法有:

if (myList.Count() == 0) { ... }

或者

if (!myList.Any()) { ... }

除以上两种方式外,还有没有更好,效率更高的实现方式呢?

方案一

public static Boolean IsEmpty<T>(this IEnumerable<T> source)
{
    if (source == null)
        return true; // or throw an exception
    return !source.Any();
}

方案二

使用ICollection检查,如下:

public static bool IsEmpty<T>(this IEnumerable<T> list)
{
    if (list == null)
    {
        throw new ArgumentNullException("list");
    }

    var genericCollection = list as ICollection<T>;
    if (genericCollection != null)
    {
        return genericCollection.Count == 0;
    }

    var nonGenericCollection = list as ICollection;
    if (nonGenericCollection != null)
    {
        return nonGenericCollection.Count == 0;
    }

    return !list.Any();
}

方案三

public static bool IsEmpty<T>(this IEnumerable<T> enumerable)
{
    return !enumerable.GetEnumerator().MoveNext();
}

方案四

if(enumerable.FirstOrDefault() != null)

版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。

上一篇: [LINQ].NET/C#程序开发LINQ如何在忽略/不区分大小写的情况下判断是否包含某个字符串?

下一篇: [LINQ].NET/C#程序开发中如何使用LINQ将一个集合List<T>分割成N个子集合呢?

本文永久链接码友网 » [LINQ].NET/C#程序开发中如何如何检查一个集合是否为空?

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册