代码之家  ›  专栏  ›  技术社区  ›  Shahar Shokrani

在“Sequence contains no elements”中筛选项后查找最小差异[重复]

  •  0
  • Shahar Shokrani  · 技术社区  · 6 年前

    我正在从linq表达式生成一个十进制值列表,我想要最小的非零值。但是,linq表达式完全有可能导致空列表。

    这将引发一个异常,并且没有MinOrDefault来处理这种情况。

    decimal result = (from Item itm in itemList
                      where itm.Amount > 0
                      select itm.Amount).Min();
    

    如果列表为空,将结果设置为0的最简单方法是什么?

    0 回复  |  直到 15 年前
        1
  •  -1
  •   Jason    5 年前
    decimal? result = (from Item itm in itemList
                      where itm.Amount != 0
                      select (decimal?)itm.Amount).Min();
    

    注意转换为 decimal? . 如果没有,您将得到一个空结果(在事实之后处理这个问题-我主要说明如何停止异常)。我还用了“非零”这个词 != 而不是 > .