2015-10-06 56 views
0

我有一個自定義列表和字典。更新列表屬性使用LINQ加入字典

class HldSS 
{ 
     string ID 
     string IDLong 
     string Name 
     // other fields 
} 

class SecurityID 
{ 
     string ID1 
     string ID2 
     string IDLong 
} 

我的目錄hldList是

List<HldSS> 

&我的字典dicID是(其中ID1是關鍵值)

Dictionary<string, SecurityID> 

我所試圖做的是填充在IDLong場我的hldList通過使用字典。所以我試圖通過加入我的hldList和ID字段&鍵值中的dicID來編寫一個linq查詢來更新我的hldList中的字段IDLong。

但是我開始寫下面的查詢,我不確定如何進一步處理。

List<HldSS> res = from hld in hldList 
         join dic in dicID 
         on hld.ID equals dic.Key 

的什麼我正在尋找

hldList     dicID 
ID  IDLong   ID1  IDLong 
ABC      ABC  ABC123 
ABC      LMN  LMN456 
LMN 
PLO 
ABC 

結果

hldList 
ID  IDLong 
ABC  ABC123 
ABC  ABC123 
LMN  LMN456 
PLO 
ABC  ABC123 
+2

一個LINQ查詢不應該更新的東西,你想(重新)創建列表? –

+0

啊,是的,它響鈴。只要保留hldList中的所有記錄,重新創建列表就可以工作 – mHelpMe

回答

1

一般是LINQ查詢不應該更新的東西例如,你必須創建一個新的列表。

var query = from hld in hldList 
      join dic in dicID 
      on hld.ID equals dic.Key 
      select new HldSS 
      { 
       ID = hld.ID, 
       IDLong = dic.Value.IDLong, 
       Name = hld.Name, 
       // other properties 
      }; 

List<HldSS> res = query.ToList(); 

如果您想更新您有原始列表循環播放:

foreach(HldSS h in hldList) 
{ 
    SecurityID sec; 
    if(dic.TryGetValue(h.ID, out sec)) 
     h.IDLong = sec.IDLong; 
} 

這也比LINQ查詢效率更高。