按相关字段排序列表C#

时间:2016-09-14 11:34:20

标签: c# linq dictionary

请帮我写一个正确的代码。 我试图在互联网上搜索一些字母,但它对我没有帮助。

我有一个大字典,其中包含Dictionary<string, Dictionary<string, string>>类型的数据(名称:“StructureDictionary”)。

“高级别”有不同的词典键:

[General], [Order], ..., [Group1], [Group5], [Group34], [StaticText3], [Group2], [DynamicPicture2], [StaticText2]. 

我需要将组的索引列表取消排序(1, 5, 34, 2...),并按字母顺序按(string)StructureDictionary["[Group*]"]["Group_Name"]的值排序。

“Group_Name”是具有字符串类型值的“低级”键,不包含任何“高级”键。此外,某些“组”键没有“Group_Name”字段,或者“Group_Name”键的值为空或与其他组相似。这些组应包含在最终列表的末尾。

我已经制作了一个未排序的索引列表,但我无法编写正确的代码来制作排序列表。我们可以对现有列表进行排序或重新制作新列表。排序条件的选择包括CheckBox条件。

List<string> Groups = StructureDictionary
      .Where(x => x.Key.Contains("Group"))
      .Select(x => x.Key.Trim(new char[] { '[', ']', ' ' })
      .Remove(0, 5))
      .ToList();

if (SurveySortCheckBox3.Checked == true)
{
    var res =
        from d in Groups
        orderby StructureDictionary[string.Format("[Group{0}]", d)]["Groups_Name"]
        select d;

         Groups = res;
}

请帮我修正(或编写新的)“if-true”分支中的代码,以制作排序列表(例如:Groups.Sort()方法),正如我之前所述。为了正确理解,我添加了一张结构示例的图片。谢谢你的关注。

Example of structure

0 个答案:

没有答案