1. ホーム
  2. c#

[解決済み] LINQで "MinOrDefault "を実現する方法とは?

2023-02-23 23:01:06

質問

LINQ式から10進数の値のリストを作成していますが、ゼロでない最小の値が欲しいのです。しかし、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? . もし何もなければ、空の結果が得られます (それは後で処理すればいいのです。私は主に例外を止める方法を説明しているのです)。私はまた、"non-zero" を使用するようにしました。 != ではなく >