きれいではありませんのような何かをしたいのLINQ
をチェックし、使用してNullBool
を返却する必要がありますが、:
IEnumerable<Object1> objects = ...
var firstTwoDistinctValues = objects.Select(o => o.NullBool)
.Distinct()
.Take(2) // Early exit
.ToList();
var result = firstTwoDistinctValues.Count == 2
? null : firstTwoDistinctValues.SingleOrDefault();
は今ではかなり効率的です理由:
- ソースコレクションを複数回列挙することなく動作します。ソースがリストである場合、これは大きな問題ではありませんが、ソースが高価な/非決定論的なクエリである場合には重要になります。
- 一意の値以上の場合は、早めに終了します。
さらに、ソースコレクションが空の場合は正常に動作します。リストについて
、あなたも効率的に行うことができます。
IList<Object1> objects = ...
var firstNullBool = objects.Select(o => o.NullBool).FirstOrDefault();
var result = objects.All(o => o.NullBool == firstNullBool) ? firstNullBool : null;
出典
2012-01-24 07:10:53
Ani
チェック!すべてのブール値が等しいことは? – sblom
はい、nullableブール値のリストではなく、null可能ブール値を返すだけです。 –
NullBoolのための別名を取得します。すべて同じであれば、1つのレコードを取得する必要があります:) – V4Vendetta