【问题标题】:From Dictionary<int,List<Tuple<string,object>>> to Dictionary<int,List<Tuple<string,object,AnEnum>>> with LINQ从 Dictionary<int,List<Tuple<string,object>>> 到 Dictionary<int,List<Tuple<string,object,AnEnum>>> 与 LINQ
【发布时间】:2018-01-25 21:45:33
【问题描述】:

假设我有一个Dictionary&lt;int,List&lt;Tuple&lt;string,object&gt;&gt;&gt; d。我如何使用 LINQ 从d 创建一个Dictionary&lt;int,List&lt;Tuple&lt;string,object,AnEnum&gt;&gt;&gt; d'(其中AnEnum 是一个enum),以便Tuple&lt;string,object,AnEnum&gt; 中的每个AnEnum 都由&lt;Tuple&lt;string,object&gt; 上的条件确定?

备注。 这确实是一个嵌套结构。只是为了解释一下:在我的世界中,有些产品由 id (int's) 表征,并且具有字段(以 string's 命名),其值是 string's 的数字 - 因此Tuple 中的 object。我有一个 api 到 id 列表 List&lt;int&gt; 和字段列表 List&lt;string&gt; 关联 Dictionary&lt;int,List&lt;Tuple&lt;string,object&gt;&gt;&gt;。根据某些字段的值,我可以知道我正在处理的产品“类型”,我用enum标记的类型。

【问题讨论】:

  • 也许你应该从 Tuple 中的任何内容创建一个类
  • 哇哦,这是一个疯狂的嵌套结构!
  • @Guy 课程对我有什么帮助?
  • @ujsgeyrr1f0d0d0r0h1h0j0j_juj 对于初学者的可读性,您可以使用Dictionary&lt;int, SomeClass&gt; 而不是那种复杂的结构。在您的情况下,添加enum 会容易得多,只需添加另一个字段。而且用class会更合适,毕竟C#是面向对象的语言。

标签: c# list linq dictionary tuples


【解决方案1】:

嗯,可能是这样的:

d.ToDictionary(pair => pair.Key, 
               pair => pair.Value.Select(tuple => 
                              tuple.Create(tuple.Item1,
                                           tuple.Item2,                                                                                                     
                                           ConvertToEnum(tuple))).ToArray());

【讨论】:

  • 谢谢,它帮助了我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多