如何解决使用? LINQ运算符
根据this documentation,我可以使用A?.B?.Do(C);
。
我有一个List
,我想对其进行过滤,然后使用Min
方法:
var Min = MyList.Where(o => o.Propery1 == 1)?.Min(o => o.Price)
问题是MyList.Where(o => o.Propery1 == 1)
没有返回任何结果,并且出现了此错误:
序列不包含任何元素
还有StackTrace
:
在System.Linq.Enumerable.Min(IEnumerable1源) 在System.Linq.Enumerable.Min [TSource](IEnumerable1源,Func`2选择器)处...
那是什么问题?为什么我不能将Min
方法与空列表一起使用?
解决方法
我建议在调用min
方法之前使用.DefaultIfEmpty()
方法:
MyList.Where(o => o.Propery1 == 1).DefaultIfEmpty().Min(o => o?.Price)
,
DefaultIfEmpty
,返回IEnumerable<T>
的元素,如果序列为空,则返回默认值的单例集合。
当左侧的表达式为null时,?.
又称为null条件运算符。在这种情况下,您没有null而是一个空的可枚举,因此.Max()不知道当输入为空时该怎么办。
您有一个空房间:返回最老者的年龄
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。