これが次のコードを実行する最善の方法であるかどうかはわかりません。私は別のforeachの中でforeachで売られていません。これはLinqの方がいいでしょうか?**これら2つのforeach-loopを実行する最も効率的な方法は何ですか?
*私は/よりエレガントな
Cを読みやすい)より良いが、どちらか
a)はよりパフォーマンス
Bすることができることを理解して)上記
NOTEのすべて:受け入れ.NET 3.5ソリューション:) NOTE2:2つのIListは、Linq2Sqlを介した複数レコードセットストアドプロシージャの結果でした。
ここでmakeがありますが、コードを信じて:
// These two lists are the results from a IMultipleResults Linq2Sql stored procedure.
IList<Car> carList = results.GetResult<Car>().ToList();
IList<Person> people = results.GetResult<Person>().ToList();
// Associate which people own which cars.
foreach(var person in people)
{
var cars = (from c in cars
where c.CarId == person.CarId
select c).ToList();
foreach (var car in cars)
{
car.Person = person;
}
}
乾杯:)
私はこれがもっとうまくいくと信じています。結合の中でハッシュテーブルを使っています。複雑さはO(P * C)の代わりにO(P * C)になります。 –
これはとてもファンキーです。 +1 –
Jonそれは本当に速いようです。 O(P + C)とO(P * C)の違いはありません。このバージョンでは結合が実行された後に単一の列挙子が作成され、2つの外部/内部列挙子で元の動作が行われるからです。私は答えに自分の発見を加えました。 –