C# LINQ到空集合
我的虚拟机中有一个简单的linq:C# LINQ到空集合,c#,linq,C#,Linq,我的虚拟机中有一个简单的linq: public int MaxItem => Collection.Max((c)=> c.Count); 如果集合中充满了项目,则它没有问题。但如果我需要像这样清除它: Collection.Clear(); 那么我有一个例外: System.InvalidOperationException异常 如何修复它?Max(和Min)对于空集合是未定义的,因此唯一合理的行为是在序列没有项时抛出异常 如果您的收集需要特殊处理,请检查空(或“满项”)条
public int MaxItem => Collection.Max((c)=> c.Count);
如果集合
中充满了项目,则它没有问题。但如果我需要像这样清除它:
Collection.Clear();
那么我有一个例外:
System.InvalidOperationException异常
如何修复它?Max
(和Min
)对于空集合是未定义的,因此唯一合理的行为是在序列没有项时抛出异常
如果您的收集需要特殊处理,请检查空(或“满项”)条件并调用不同的方法:
public int MaxItem => Collection.IsFullOfItems ?
Collection.Max((c)=> c.Count) : 0;
(如果没有自定义的IsFullOfItems
属性,则可以对大多数集合类型使用Any()
或Count!=0
)
或者,如果
Collection
是自定义类,则可以实现自己的Max(Func谓词)
方法,它将在集合.Max
调用中使用,而不是默认的可枚举.Max
扩展方法。当集合中没有项目时,您希望发生什么情况?您的集合的类型是什么?@Servy I want-->MaxItem
=0。@С砦砦砦砦当集合为空时是否返回该值?collection.Any()?Collection.Max((c)=>c.Count):0代码>