C# 如何将2个列表传递到Parallel.ForEach?

C# 如何将2个列表传递到Parallel.ForEach?,c#,.net,foreach,parallel-processing,C#,.net,Foreach,Parallel Processing,如何将两个列表传递到并行的.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)

如何将两个列表传递到并行的.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
});  
List a=newlist(){new Person(),new Person(),new Person()};
列表b=新列表(){new Car(),new Car(),new Car()};
//伪码
平行。每辆车(a,b,(人,车)=>{
//在人身上工作,在车上工作
});  

我宁愿避免将人和车封装到对象容器中。这可能吗?

您正在寻找
可枚举的.Zip

如果您正在使用.NET 4(您可能是),并且您试图将第一个
人与第一辆
汽车等配对,您可以使用:

List a=newlist(){new Person(),new Person(),new Person()};
列表b=新列表(){}{new Car(),new Car(),new Car()};
var zipped=a.Zip(b,(人,车)=>new{person,car});
Parallel.ForEach(拉链,成对=>{
Person=成对的人;
Car Car=pair.Car;
});
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;
});