2014-11-02 52 views
1

基本上我有兩個XML文件被反序列化到對象中。 我想要做的是採取兩個對象,並根據匹配ID從兩者合併信息。在對象C中查找值的最佳方法#

我能想到這樣做的唯一方法是這樣的:

foreach(Computer PC in Computers) 
{ 

    foreach(Info data in InfoTable) 
    { 

     if(PC.ID == data.ID){PC.Info = data.Info;} 
    } 
} 

我有大約10K的記錄,所以我無法想象這是最有效的方式。

回答

5

創建一個映射Info.ID - 使用Dictionary<int, Info>>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)操作。

0

你可以使用LINQ

model pc =(from cm in Computers 
     join it in InfoTable on 
     cm.ID equal it.ID 
     select new model 
     { 
     info=it.info 
     }); 

,其中模型是同一類的計算機或您的最終數據

相關問題