问题描述
|
如何将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容器中。这可能吗?
解决方法
如果您正在使用.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;
});
,您正在寻找Enumerable.Zip