Как передать 2 списка в Parallel.ForEach? - PullRequest
18 голосов
/ 14 апреля 2011

Как передать 2 списка в Parallel.ForEach?

Пример:

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
});  

Я бы предпочел избегать инкапсуляции Person и Car в контейнер Object. Это возможно?

Ответы [ 2 ]

25 голосов
/ 14 апреля 2011

Если вы используете .NET 4 (которым вы, вероятно, являетесь) и пытаетесь соединить первое Person с первым Car и т. Д., Вы можете просто использовать Zip :

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;
});
10 голосов
/ 14 апреля 2011

Вы ищете Enumerable.Zip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...