1

List<Employee>次のようなプロパティを含むコレクション があります

NameEmployeeIDAddressなどJobTitle_

すべての従業員には、変更される列がほとんどなく、これらのいくつかの列に基づいて、Active Directory を更新する必要があります。

isEditableそのため、特定の従業員の列が変更されたかどうかを示すフィールドを各列に作成することにしました。しかし、すべての列に対してこのフィールドを作成する必要があり、列の数も頻繁に変更されることがわかりました。

そこで、ネストされた辞書コレクションを思いつきました

 Dictionary<int, Dictionary<object, bool>>

これは を として保存しEmployee IDkeyタイプobjectはすべてを保存し、column namesデフォルトboolではfalse

しかし、上記のネストされたコレクションに Collection を設定する方法がわかりません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));
   }
}

しかし、そのスローエラー.for eachからメタデータ(列名)を取得しようとしてい_empCollます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 に答える