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));
有用链接:
drivers.Select((d,i) => new { Index = i, Driver = d })
.ToList()
.ForEach(entry => car[entry.Index].AssignDriver(entry.Driver));
有用链接:
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
等操作符专门用于表示引入了副作用。