1. ホーム
  2. c#

[解決済み] LINQ .Any VS .Exists - 違いは何ですか?

2022-03-20 13:03:48

質問

LINQ on collectionsを使用して、次のコード行の違いは何ですか?

if(!coll.Any(i => i.Value))

そして

if(!coll.Exists(i => i.Value))

アップデート1

ディスアセンブルすると .Exists は、コードがないように見えます。

アップデート2

どなたか、なぜそこにコードがないのかご存じですか?

解決方法は?

ドキュメントを見る

リスト.Exists (オブジェクトメソッド - MSDN)

List(T)に指定された述語で定義された条件にマッチする要素が含まれているかどうかを判定します。

これは.NET 2.0から存在するので、LINQの前です。述語と一緒に使われることを意図しています。 デリゲート しかし、ラムダ式は後方互換性があります。また、Listだけにはこれがある(IListにもない)。

IEnumerable.Any (拡張メソッド - MSDN)

シーケンスのいずれかの要素が条件を満たすかどうかを判定します。

これは.NET 3.5の新機能で、引数にFunc(TSource, bool)を使うので、ラムダ式やLINQで使うことを想定していた。

動作としては、これらは同じです。