1

ID である包含オブジェクトと、文字列 ID フィールドを持つ別の包含オブジェクトがありますArrayList ids。今、私は次のように見える に一致しないものを見つけるためのコードを持っています:StringArrayList objsidsobjs

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 アプローチの違いは何ですか?

4

2 に答える 2