【LINQ】要素が存在するかを判定するにはCount>0でなくAnyを使おう
LINQで要素が一つ以上存在するかを判定するには、
Count() > 0 でやる方法と、 Any() で判定する方法がある。
どちらでも目的を達成することは可能だが、速度面や可読性から、Any()を使用したほうがいい。
1 2 3 4 5 6 |
//listを検索した結果が0件以上かを判定するロジック //Count() > 0を使用した場合 bool res = list.Where(検索条件).Count() > 0; //Any()を使用した場合 res = list.Where(検索条件).Any(); |
Any()であれば、要素が一つでもあった時点で結果を返す。
しかし、Countの場合は数を出すため、すべての要素をなめていってしまう。
数が少ない場合であれば問題ないが、多い場合は性能にも影響が出てしまうため、要素があるかどうかを判定するだけであればAny()を使用したほうがいい。