つかさのBlog@hatena

技術系ブログのはず

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)

参考:C#におけるLINQの小ネタ1

条件に合致する要素が1つでもあるかどうかを調べる場合は「Any()」が使用できます。
そのため、下記のように記述できます。

if (list.Any(x => x.IsAlive))

参考:C#におけるLINQの小ネタ2

まとめ

下記の通り、非常にスッキリしました。
どちらも動作は同じで誤りではありませんが、余計な記述は極力しないほうがバグを埋め込まなくて済むかと思います。

Before
if (list.Where(x => x.IsAlive == true).Count() > 0)
After
if (list.Any(x => x.IsAlive))


参考

f:id:tsukasa-labz:20180829231254j:plain:w200
C#ショートコードプログラミング 第3版