如何知道IEnumerable <valuetype>是否为空,而不计算所有?</valuetype>

时间:2011-03-14 16:05:07

标签: c# .net ienumerable

如果不计算IEnumerables<T>struct元素集合中的所有元素,检测它是否为空的最佳方法是什么?

例如,在class元素上,我通常会使用first或default进行测试:

myEnumerableReferenceTypeElements.FirstOrDefault() == null

因为null通常不是正在迭代的集合中的有效值。

但是,对于所有值必须在预定义范围内的值类型,默认值(例如int default 0)也是集合中可行的项目。

myValueTypeInt32Elements.FirstOrDefault() == 0   // can't tell if empty for sure

3 个答案:

答案 0 :(得分:13)

尝试使用.Any()

bool isEmpty = !myEnumerable.Any();

来自MSDN

  

确定序列是否包含任何元素。

答案 1 :(得分:4)

.Any() extension method是针对此案例设计的。

答案 2 :(得分:1)

bool isEmpty = !myEnumerableReferenceTypeElements.Any();