【问题标题】:Populating data to a nested Dictionary Collection将数据填充到嵌套字典集合
【发布时间】:2012-09-18 09:46:55
【问题描述】:

我有一个收藏 List<Employee> 包含类似的属性

Name,EmployeeID,Address,JobTitle

对于每个员工来说,有几列会发生变化,我需要根据这几列来更新我的 Active Directory。

所以我想为每一列创建一个isEditable 字段,这将表示该列是否针对特定员工发生了变化。但事实证明,我需要为所有列创建此字段,并且列数也经常变化。

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

 Dictionary<int, Dictionary<object, bool>>

它将Employee ID存储为keyobject类型将存储所有column namesbool,默认情况下将是false

但我不知道如何使用 List&lt;Employee&gt; 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));
   }
}

但它的抛出错误。我正在尝试从_empColl 获取每个EmployeeID 的元数据(列名)

【问题讨论】:

  • 错误 1 ​​最佳重载方法匹配 'System.Collections.Generic.Dictionary>.Add(int, System.Collections.Generic .Dictionary)' 有一些无效参数
  • 为什么不在Employee 类中实现INotifyPropertyChanged 以获取更改的属性列表?
  • dict.add() 是“void”类型,你不能在 _isEditable.Add() 中使用它。
  • @Dennis:我不能使用它,因为我的属性没有改变。我正在尝试比较 2 个具有相同列的集合,并且对于每一行,不同的列我不做一张便条

标签: c#


【解决方案1】:

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

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

【讨论】:

  • 非常感谢..!这真的帮助了我
猜你喜欢
  • 2018-01-20
  • 1970-01-01
  • 2015-12-07
  • 2021-11-05
  • 2014-10-31
  • 1970-01-01
  • 2019-12-09
  • 2016-11-25
  • 1970-01-01
相关资源
最近更新 更多