C#将两个列表与一个属性进行比较,并更改第一个列表的值
发布时间:2020-12-15 22:33:53 所属栏目:百科 来源:网络整理
导读:我有以下问题: 我有两个foo类型的列表. 现在我想迭代两个列表,就像在第二个列表中我更改了两个属性的值. 为了澄清我的意思,这里的代码我知道它会起作用: foreach(foo bar in list_1) { foreach(foo bar2 in list_2) { if (bar.ID == bar2.ID) { bar.name =
我有以下问题:
我有两个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中也需要它们. 亲切的问候, 解决方法
如果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; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |