繁体   English   中英

嵌套字典上的Linq

Linq on nested Dictionary

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一个字典的字典,我想从Linq的内部字典中找到一个值。

我的代码是:

private Dictionary<string, Dictionary<int, string>> SubCategoryDictionary = new Dictionary<string, Dictionary<int, string>>();
  private Dictionary<int, string> BGA_Dictionary = new Dictionary<int, string>();
  private Dictionary<int, string> Lead3D_Dictionary = new Dictionary<int, string>();
  private Dictionary<int, string> Lead2D_Dictionary = new Dictionary<int, string>();
  private Dictionary<int, string> Leadless_Dictionary = new Dictionary<int, string>();
  private Dictionary<int, string> PIC_Dictionary = new Dictionary<int, string>();

在我的构造函数中,我具有以下所有值:

BGA_Dictionary.Add(1, "Body_Measurement");
     BGA_Dictionary.Add(2, "Ball_Measurement");
     SubCategoryDictionary.Add("BGA", BGA_Dictionary);

     Lead3D_Dictionary.Add(1, "Component_Height");
     Lead3D_Dictionary.Add(2, "Rib_Measurement");
     SubCategoryDictionary.Add("Package", Lead3D_Dictionary);

     Lead2D_Dictionary.Add(1, "Dirt_Inspection");
     Lead2D_Dictionary.Add(2, "Half_Cut_Inspection");
     SubCategoryDictionary.Add("Mark", Lead2D_Dictionary);

现在,我需要一个Lambda表达式,该表达式将给我类似的内容:当SubCategoryDictionary =“ Mark”的键和Lead3D_Dictionary的键= 2时,我应该得到“ Rib_Measurement”。

我尝试使用以下代码:

string q = (from cls in SubCategoryDictionary
                 from s in cls.Value
                 where cls.Key == "Mark" && s.Key == 3
                 select s.Value).FirstOrDefault();


foreach (var a in q)
     {

     }

上面的代码有效,但我需要在lambda表达式中使用。 因此,如果有人帮助我形成Lambda阵型。 这将有很大的帮助。

谢谢。

2 个回复

我不确定为什么您需要lambda才能通过键访问字典,但是这里是:

Func<string,int,string> lambda = (k1, k2) => SubCategoryDictionary[k1][k2];

现在您可以使用var subCategory = lambda("Mark", 2);来调用它var subCategory = lambda("Mark", 2);

我猜下面的代码应该为您提供您想要获得的价值。

        var lead3 = SubCategoryDictionary["Mark"].SingleOrDefault(x => x.Key == 2).Value;

这个想法是使用第一个字典的Key并获得它的值,而不是通过提供您感兴趣的内部字典值的键使用SingleOrDefault方法对其进行过滤。

希望这可以帮助

1 嵌套LINQ用于字典

使用C#,我有以下Dictionary 我正在尝试编写一个LINQ查询,该查询将在我的Dictionary每个键值内选择MyOtherClass每个实例。 到目前为止,我有以下内容: 它将编译并运行,但是whatImLookingFor似乎无法转换为MyOtherClass对象 ...

2015-08-11 18:42:39 3 62   c#/ linq
2 嵌套列表到LINQ中的多层字典

我有以下课程 它是n元树,其中只有叶节点(没有子节点的节点)才会填充data属性。 我想使用LINQ将此嵌套列表转换为多级字典。 例如,如果树如下 我希望使用LINQ将上述结构转换为Dictionary( 注意:不是Flat Dictionary ),如下所示。 我需要根字 ...

3 使用带有嵌套字典的linq选择列

如何从本词典中使用linq获取所有“列”。 我可以以这种方式访问​​行 我就能得到一个牢房 我想做的是创建表。 在哪里获得列A的值。 ...

2010-03-28 23:27:02 6 3550   c#/ linq
6 使用Linq在另一个词典中返回嵌套词典

我在创建复杂的Linq查询时遇到了一些问题。 我有以下表格: 我需要构造一个查询,该查询返回一个字典,其中以“活动”表中的不同年份作为键。 该值应该是另一个字典,其中包含当前不同年份内的所有不同月份作为关键字,然后对于每个不同月份,我需要一个包含该月所有项目编号的字符串列表。 ...

2016-03-29 09:24:37 4 565   c#/ linq
7 在多级字典中将foreach嵌套到LINQ

我想在下面使用LINQ简化嵌套的foreach循环,但找不到答案。 我想我可以使用lambda来使用SelectMany,但不确定。 我想在此嵌套迭代之后创建ClassA对象的列表。 任何帮助表示赞赏: ...

2017-10-26 05:27:47 1 128   c#/ linq
10 C#LINQ-将嵌套字典转换为列表

如何将嵌套字典压平到应包含这些字典键的某些对象(在以下示例中为SomeObject )列表中? 例如:让我们拥有以下类型的字典 那我们上课 如何将nestedDictionary转换为List&lt;SomeObject&gt; ,其中var1是外部字典的键, var2是内 ...

2012-07-13 09:42:55 4 3197   c#/ linq
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM