1

我有一个 List<Employee>包含类似属性的集合

Name, EmployeeID, Address,JobTitle等等

对于每个员工来说,几乎没有几列会发生变化,并且基于这几列我需要更新我的 Active Directory。

所以我想为每一列创建一个isEditable字段,该字段将表示该列对于特定员工是否已更改。但事实证明,我需要为所有列创建此字段,并且列数也经常更改。

所以我想出了嵌套字典集合

 Dictionary<int, Dictionary<object, bool>>

它将存储Employee IDkey并且object类型将存储所有column names并且bool默认情况下将是false

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

这是我到目前为止所尝试的

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));
   }
}

但它的抛出错误。我试图从_empCollfor each中获取元数据(列名)EmployeeID

4

1 回答 1

2

您可以使用下面的 LINQ 来获得结果:

 var _isEditable = _empColl.ToDictionary(item => item.EmployeeID,
                                         item => item.GetType()
                                                  .GetProperties()
                                                  .ToDictionary(pro => pro.Name, 
                                                                pro => false));
于 2012-09-18T10:04:28.610 回答