Aşağıdaki kodun en iyi yolunun bu olduğundan emin değilim. Başka bir foreach içinde foreach satmadım. Bu Linq ile daha iyi ** yapılabilir mi?Bu iki foreach döngüsünü yapmanın en etkili yolu nedir?
* Daha iyi Yukarıdaki
NOT tümü) daha şık/
c okumak için) ya
a) daha fazla ölçülebilir
b daha kolay olabilir anlıyoruz: .NET 3.5 çözümleri kabul :) NOT2: İki IList, Linq2Sql aracılığıyla bir çoklu kayıt saklı yordamının sonuçlarıydı.
burada yapmak kodu inanmak var:
// 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;
}
}
Şerefe :)
Ben performans farklı olsun ama sanmıyorum
Bu * nin * daha iyi performans göstereceğine inanıyorum, çünkü bu birleşim içinde bir hashtable kullanacaktır - karmaşıklık O (P * C) yerine O (P + C) olacaktır. –
Bu çok korkak. +1 –
Jon Gerçekten daha hızlı görünüyor. O (P + C) vs O (P * C) olayında haklısınız gibi görünüyor çünkü bu sürüm, orijinal iki dış/iç numaralayıcıyla çalışırken, birleştirme sonrasında tek bir numaralayıcı oluşturuyor. Bulgularıma cevabı ekledim. –