ID である包含オブジェクトと、文字列 ID フィールドを持つ別の包含オブジェクトがありますArrayList ids
。今、私は次のように見える に一致しないものを見つけるためのコードを持っています:String
ArrayList objs
ids
objs
var missing = new List<string>();
foreach (MyObj obj in objs)
{
if (!ids.Contains(obj.ID))
{
missing.Add(obj.ID);
}
}
これはうまくいきます。しかし、私はこれを「LINQ で考える」ための演習に書き直しました。
var missing = objs.Cast<MyObj>().Select(x => x.ID).Except(ids.Cast<string>());
この LINQはforeach
+アプローチよりも遅いと予想していましContains
たが (特にCast
呼び出しが原因で)、LINQ は大幅に高速に実行されます。パフォーマンス上の利点をもたらす LINQ アプローチの違いは何ですか?