【发布时间】:2023-04-08 15:40:01
【问题描述】:
需要创建部分填充的深度嵌套字典
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 做到这一点
【问题讨论】:
-
无论你如何实现它,除非你重新设计,否则它是不可维护的。
-
试试这样的: var results = facility.GroupBy(x => facility.Name).ToDictionary(k => k.Key, v => v.GroupBy(n => n.name ).ToDictionary(x => x.key, y = y.date));
-
var mayNestdictinoary =facilities.GroupBy(x => x.Name).ToDictionary(k => k.Key, v => names.ToDictionary(x => x, y => (IDictionary)new Dictionary
())); -
试过了,但它返回给我一个键值对的集合。只有一个字典而不是三个嵌套的....
-
做到了。非常感谢您的提示!!!!
标签: c# algorithm linq dictionary nested