2011-04-14 14 views
18

2 listeyi nasıl Parallel.ForEach içine geçirebilirim?2 listeyi Parallel.ForEach içine nasıl geçiririm?

Örnek:

List<Person> a = new List<Person>() { new Person(), new Person(), new Person() }; 
List<Car> b = new List<Car>() { new Car(), new Car(), new Car() }; 

//PSEUDO CODE 
Parallel.ForEach(a, b, (person, car) => { 
    //WORK ON person, WORK ON car 
}); 

ben Nesne kaba Kişi ve Araç enkapsüle kaçınmayı tercih ederim. Mümkün mü?

Yardımlarınız için teşekkürler!

cevap

24

arıyor ve ilk Car vb ile ilk Person eşleştirmeye çalıştığınız, sadece Zip kullanabilirsiniz:

List<Person> a = new List<Person>() { new Person(), new Person(), new Person() }; 
List<Car> b = new List<Car>() {} { new Car(), new Car(), new Car() }; 
var zipped = a.Zip(b, (person, car) => new { person, car }); 

Parallel.ForEach(zipped, pair => { 
    Person person = pair.person; 
    Car car = pair.car; 
}); 
+0

Teşekkürler! Bu kusursuz çalıştı. – PiZzL3

10

Eğer (muhtemelen vardır) .NET 4 kullanıyorsanız Sen Enumerable.Zip

İlgili konular