2012-09-18 74 views
1

我有一個集合 List<Employee>包含像填充數據,以嵌套的字典收藏

NameEmployeeIDAddressJobTitle

爲每一位員工有幾列,其改變和基於屬性這幾列我需要更新我的Active Directory。

因此,我爲每列創建一個isEditable字段,這將表示該列是否已更改或不是特定員工。但事實證明,我需要爲所有列創建此字段,列數也會頻繁更改。

於是我想出了嵌套的字典集合

Dictionary<int, Dictionary<object, bool>> 

將存儲Employee IDkeyobject類型將存儲所有column namesbool默認情況下會false

但我不不知道如何使用List<Employee>集合填充上述嵌套集合。

這是我曾嘗試到現在

Dictionary<int, Dictionary<object, bool>> _isEditable = new Dictionary <int, Dictionary<object, bool>>(); 

foreach (var item in _empColl) 
{ 
    foreach (var type in _empColl .GetType().GetProperties()) 
    { 
     _isEditable.Add (item.EmployeeID ,dict.Add (type.Name,false)); 
    } 
} 

但其投擲的錯誤.I'm試圖獲得來自_empColl元數據(列名),每個EmployeeID

+0

你會得到什麼錯誤? – TGlatzer

+0

錯誤'System.Collections.Generic.Dictionary > .Add(int,System.Collections.Generic.Dictionary )'的最佳重載方法匹配有一些無效參數 – praveen

+0

爲什麼不在'Employee'類中實現'INotifyPropertyChanged'來獲取已更改屬性的列表? – Dennis

回答

2

您可以使用LINQ下面得到結果:

var _isEditable = _empColl.ToDictionary(item => item.EmployeeID, 
             item => item.GetType() 
                .GetProperties() 
                .ToDictionary(pro => pro.Name, 
                   pro => false)); 
+0

非常感謝.. !這真的幫助了我 – praveen