C#におけるLINQの小ネタ3
下記は仕事中に見かけた冗長なソースコードです。
if (list.Where(x => x.IsAlive == true).Count() > 0)
「IsAlive」はbool型なので「== true」の記述は不要です。
そのため下記のように記述できます。
if (list.Where(x => x.IsAlive).Count() > 0)
「Where」で条件を指定した後に「Count()」としていますが、「Count()」内に条件を指定できます。
そのため、下記のように記述できます。
if (list.Count(x => x.IsAlive) > 0)
条件に合致する要素が1つでもあるかどうかを調べる場合は「Any()」が使用できます。
そのため、下記のように記述できます。
if (list.Any(x => x.IsAlive))
まとめ
下記の通り、非常にスッキリしました。
どちらも動作は同じで誤りではありませんが、余計な記述は極力しないほうがバグを埋め込まなくて済むかと思います。
Before
if (list.Where(x => x.IsAlive == true).Count() > 0)
After
if (list.Any(x => x.IsAlive))