我有以下问题:
我有两个foo类型的列表.
现在我想迭代两个列表,就像在第二个列表中我更改了两个属性的值.
为了澄清我的意思,这里的代码我知道它会起作用:
foreach(foo bar in list_1) {
foreach(foo bar2 in list_2) {
if (bar.ID == bar2.ID) {
bar.name = bar2.name;
bar.color = bar2.color;
}
}
}
如您所见,list_2中的属性确实具有list_1中的其他值,但我在list_1中也需要它们.
它会这样工作,但我想知道是否有更简单的方法来做到这一点(也许与LinQ?)
亲切的问候,
Asat0r
最佳答案 如果ID在list_2中是唯一的,则可以通过将列表转换为字典来更快地实现(对于大型列表)
// A little bit of Linq: ToDictionary
var dict = list_2.ToDictionary(item => item.ID, item => item);
...
foreach (item in list_1) {
foo master;
if (dict.TryGetValue(item.ID, out master)) {
item.name = master.name;
item.color = master.color;
}
}