我从linq表达式生成一个十进制值的列表,我想要最小的非零值。但是,linq表达式很有可能会导致一个空列表。
这将引发异常,并且没有MinOrDefault可以应对这种情况。
decimal result = (from Item itm in itemList
where itm.Amount > 0
select itm.Amount).Min();
如果列表为空,将结果设置为0的最巧妙方法是什么?
最佳答案
decimal? result = (from Item itm in itemList
where itm.Amount != 0
select (decimal?)itm.Amount).Min();
注意转换为
decimal?
。如果不存在任何结果,那么您将得到一个空结果(在事实发生之后就进行处理-我主要是在说明如何停止异常)。我还使!=
而不是>
成为“非零”。关于c# - 在Linq中实现 “MinOrDefault”的最捷径是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2165605/