如何使用一个集合作为参数来调用另一个相同大小的集合?

时间:2011-11-28 08:05:34

标签: c#

我有两个已知大小相同的集合:

List<Drivers> drivers;
List<Car> cars;

我需要将驱动程序从i地方放到i汽车:

for (int i = 0; i < drivers.Count; i++)
    cars[i].AssignDriver(drivers[i]);

我可以不用循环吗?

3 个答案:

答案 0 :(得分:1)

嗯,在最低级别 - 没有。无论如何你都需要迭代。

但是有一些很好的库可以更容易地处理这种情况。例如,有Interactive Extensions for .NET。虽然它们不处于生产状态,但它们可以这样做:

cars.Zip(drivers, (car, driver) => new { car, driver })
  .ForEach(x => x.car.AssignDriver(x.driver));

答案 1 :(得分:1)

LINQ仅用于查询对象,因此您需要使用循环。另一种方法是使用List.ForEach方法,但我建议不使用它,因为它有时令人困惑,无论如何以下是教育目的的例子:

drivers.Select((d,i) => new { Index = i, Driver = d })
       .ToList()
       .ForEach(entry => car[entry.Index].AssignDriver(entry.Driver));

有用的链接:

答案 2 :(得分:-1)

LINQ是你的朋友。看看这个: http://msdn.microsoft.com/en-us/library/bb548891.aspx

但请注意,我会认为您现有的方法也很好。