c#null和Any()检查的快捷方式

时间:2015-03-06 17:09:45

标签: c# linq

通常在C#中我必须这样做

if(x.Items!=null && x.Items.Any())
{ .... }

集合上有捷径吗?

2 个答案:

答案 0 :(得分:46)

在C#6中,您将能够写下:

if (x.Items?.Any() == true)

在此之前,您总是可以编写自己的扩展方法:

public static bool NotNullOrEmpty<T>(this IEnumerable<T> source)
{
    return source != null && source.Any();
}

然后使用:

if (x.NotNullOrEmpty())

更改名称以符合您的口味,例如NullSafeAny可能更符合您的喜好 - 但即使x为空,我也绝对会在名称中明确表示它是有效的通话。

答案 1 :(得分:1)

我还检查列表中的项目,以确保列表不仅包含所有空对象;所以Jon Skeet的增强回答:

public static bool NotNullOrEmpty<T>(this IEnumerable<T> source)
{
    return source != null && !source.All(x => x == null);
}