通常在C#中我必须这样做
if(x.Items!=null && x.Items.Any())
{ .... }
集合上有捷径吗?
答案 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);
}