【发布时间】:2019-06-17 09:54:52
【问题描述】:
我正在初始化一个新的字典,并像这样一一放置每个键:
igData = data.Select(x => new Dictionary<string, string> {
["Date"] = x.GetValueOrDefault("DATE"),
["SP"] = x.GetValueOrDefault("SP"),
["IG"] = x.GetValueOrDefault("IG")}).ToList();
这很好,但其余的键需要是我在 List<string> headers 中创建的标题
是否可以在上面的初始化中添加此标头列表?像这样的:
igData = data.Select(x => new Dictionary<string, string> {
["Date"] = x.GetValueOrDefault("DATE"),
["SP"] = x.GetValueOrDefault("SP"),
["IG"] = x.GetValueOrDefault("IG"),
headers.Select(y => new KeyValuePair<string, string>
(y, x.GetValueOrDefault["IG"])).ToList();
我知道值是相同的,但这是有意的。以上是可能的还是我会分开的。最好在上面执行此操作,因为我可以访问 data 集合中的值。
【问题讨论】:
-
data/headers的类型是什么?为什么要创建这么多字典? -
您应该使用
ToDictionary扩展名。 -
@ChengChen 数据是
List<Dictionary<string, string>>,标题是List<string>。 -
如果你想要一个 KeyValuePair
的列表,那么使用 List > 而不是字典。然后,您可以选择使用 AddRange() 一次添加多个项目,而字典只有 Add()。 -
字典的集合总是让我觉得-uaaah,是的-不舒服。它们往往会出人意料地增长,因此变得越来越不可维护,尤其是当您的数据结构变得更加复杂时。相反,您应该考虑使用属性创建一个类。
标签: c# linq dictionary