この質問はこれに関連していますが、完全に同じではないと思います。
与えられた:
class Foo
{
public string Bar { get; set; }
}
...
var c1 = new List<Foo>() { ... };
var c2 = new List<Foo>() { ... };
次の 2 つのループは同じ結果になります。
foreach (var item in c2.Where(f => c1.Any(f1 => f1.Bar.Equals(f.Bar))))
{ ... }
foreach (var item in c2.Where(f => c1.Select(f1 => f1.Bar).Contains(f.Bar)))
{ ... }
それらは同じように速いですか?
他の質問との違いは、ここでの余分なSelect
ステートメントが、基になるコレクションの性質の重要性を変えるかどうかです。
言い換えれば:これは含まれていますか:
foos.Contains(foo1)
これと同じ「種類のコレクション」で動作します。
foos.Select(f=>f.Bar).Contains(foo1.Bar)
私の考えられる素朴な考えは次のとおりです。