Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用一个集合作为参数,在另一个大小相同的集合中调用函数?_C# - Fatal编程技术网

C# 如何使用一个集合作为参数,在另一个大小相同的集合中调用函数?

C# 如何使用一个集合作为参数,在另一个大小相同的集合中调用函数?,c#,C#,我有两个已知大小相同的收藏: List<Drivers> drivers; List<Car> cars; 我可以不用循环吗?林克是你的朋友。看看这个: 但是,我也会认为你现有的方法也是好的。 < LINQ是你的朋友。看看这个: 但是,我也认为你现有的方法也是好的。 嗯,在最低级-不,你无论如何都需要迭代。 但是有一些很好的库可以使处理这种情况变得更容易。例如,有。虽然它们不处于生产状态,但它们可以这样做: cars.Zip(drivers, (car, drive

我有两个已知大小相同的收藏:

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

我可以不用循环吗?

林克是你的朋友。看看这个:


但是,我也会认为你现有的方法也是好的。

< LINQ是你的朋友。看看这个:


但是,我也认为你现有的方法也是好的。

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

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

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

嗯,在最低级别上-不。无论如何,您都需要迭代

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

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

LINQ只用于查询对象,所以您必须使用循环。另一种方法是使用该方法,但我建议不要使用它,因为它有时会令人困惑,无论如何,以下是教育目的的示例:

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


LINQ仅用于查询对象,所以您必须使用循环。另一种方法是使用该方法,但我建议不要使用它,因为它有时会令人困惑,无论如何,以下是教育目的的示例:

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


您需要将驾驶员与车辆匹配吗?或者你想用一些来自司机的价值来代替来自汽车的进入?我猜你们想要司机和汽车之间的一对一关系。@PawanMishra我不明白你们的问题,我只需要调用
AssignDriver
方法,就像我在描述中写的那个样。你们需要把司机和汽车匹配起来吗?或者你想用一些来自司机的价值来代替来自汽车的进入?我猜你想要司机和汽车之间的一对一关系。@PawanMishra我不明白你的问题,我只需要调用
AssignDriver
方法,就像我在描述中写的那样,应该是
ForEach(x=>x.car.AssignDriver(x.driver))是List.ForEach()还是自定义扩展方法?两者都不是。我引用的是InteractiveExtensions包。它适用于任何IEnumerable(签名为` public static void ForEach(此IEnumerable可枚举,Action-Action)),如果是
ForEach(x=>x.car.AssignDriver(x.driver))是List.ForEach()还是自定义扩展方法?两者都不是。我引用的是InteractiveExtensions包。它适用于任何IEnumerable(签名为` public static void ForEach(此IEnumerable可枚举,Action-Action))。值得注意的是,此代码效率较低:它创建一个新列表,并实际执行一次双重迭代(一次创建列表,然后执行ForEach)。虽然性能不是很关键,但这很好。绝对正确!ToList()为每个项创建一个新的列表实例并复制内存值得注意的是,这段代码效率较低:它创建一个新列表并实际执行双重迭代(一次创建列表,然后执行ForEach)。虽然性能不是很关键,但这很好。绝对正确!ToList()为每个项创建一个新的列表实例并复制内存。您应该避免在无状态LINQ操作符(如
Select
)中修改数据(所谓的副作用)。它们的语义暗示了这一需求。IX中的
ForEach
等运算符专门用于表示引入了副作用。应避免在
Select
等无状态LINQ运算符内修改数据(所谓的副作用)。它们的语义暗示了这一需求。IX中的ForEach
等操作符专门用于表示引入了副作用。