2017-05-10 25 views
-1

深度嵌套的字典需要創建一個部分pupulated如何創建部分填充使用LINQ C#

IDictionary<string, IDictionary<string, IDictionary<DateTime, double>>> AllparamsSmooth 

深度嵌套的字典我有

List<Facility> facilities 

List<string> names 

極品創建AllparamsSmooth,其中只是字符串被瞳孔^(它們只是名字):

難道是這樣的:

foreach (var facility in facilities) 
{ 
    AllparamsSmooth.Add(facility.Name, new Dictionary<string, IDictionary<DateTime, double>>()); 

    foreach (var name in names) 
    { 
     AllparamsSmooth[facility.Name].Add(name, new Dictionary<DateTime, double>()); 
    } 
} 

問題 - 如何使用LINQ做這個

+0

但是你的設計nt這,它不會被維護,除非你重新設計。 – stt106

+0

嘗試這樣:var results = facilities.GroupBy(x => facility.Name).ToDictionary(k => k.Key,v => v.GroupBy(n => n.name).ToDictionary(x => x.key,y = y.date)); – jdweng

+0

var mayNestdictinoary = facilities.GroupBy(x => x.Name).ToDictionary(k => k.Key,v => names.ToDictionary(x => x,y => (IDictionary )new Dictionary ())); – Yauheni

回答

1

相當難看且無法讀取:

AllparamsSmooth = facilities.ToDictionary(
    x => x.Name, 
    x => (IDictionary<string, IDictionary<DateTime, double>>)names.ToDictionary(
     y => y, 
     y => (IDictionary<DateTime, double>)new Dictionary<DateTime, double>())); 

注意各種必要的強制類型轉換,否則你會得到a

IDictionary<string, Dictionary<string, Dictionary<DateTime, double>>> 
+0

是啊!這樣可行!謝謝! – Yauheni