基本上我有两个XML文件被反序列化为对象。 我想要做的是取两个对象并根据匹配的ID来合并两个对象的信息。
我能想到的唯一方法就是这样:
foreach(Computer PC in Computers)
{
foreach(Info data in InfoTable)
{
if(PC.ID == data.ID){PC.Info = data.Info;}
}
}
我有大约10k的记录,所以我无法想象这是最有效的方式。
答案 0 :(得分:5)
创建映射Info.ID
- > Info
使用Dictionary<int, Info>
:
var map = InfoTable.ToDictionary(data => data.Id);
然后你只需要一个循环:
foreach(Computer PC in Computers)
{
if(map.ContainsKey(PC.ID))
{
PC.Info = map[PC.ID].Info;
}
}
Dictionary<TKey, TValue>
中的键查找是 O(1)操作。
答案 1 :(得分:0)
你可以使用linq
model pc =(from cm in Computers
join it in InfoTable on
cm.ID equal it.ID
select new model
{
info=it.info
});
其中model与计算机或您的最终数据是同一类