LINQ清空集合

时间:2018-02-19 21:12:03

标签: c# linq

我的VM中有一个简单的linq:

 public int MaxItem => Collection.Max((c)=> c.Count);

如果Collection的项目已满,则没有任何问题。但如果我需要像这样清除它:

Collection.Clear();

然后我有例外:

  

System.InvalidOperationException

如何解决?

1 个答案:

答案 0 :(得分:4)

Max(和Min)未定义为空集,因此唯一合理的行为是在序列没有项时抛出异常。

如果您需要对集合进行特殊处理 - 检查空(或“满条件”)条件并调用不同的方法:

   public int MaxItem => Collection.IsFullOfItems ? 
        Collection.Max((c)=> c.Count) : 0;

(如果您没有自定义Any()属性,则可以对大多数集合类型使用Count != 0IsFullOfItems

或者,如果Collection是您的自定义类,则可以在该类中实现自己的Max(Func<bool, T> predicate)方法,该方法将用于Collection.Max调用,而不是默认的Enumerable.Max扩展方法

相关问题