如何以编程方式在分组集合上以C#创建排序顺序

如何以编程方式在分组集合上以C#创建排序顺序,c#,linq,sorting,collections,C#,Linq,Sorting,Collections,我有这样一段代码,它采用一个集合并按字符串字段分组: var groupByIssueType = issues.GroupBy(r => r.IssueType); 我现在想循环每个组,但我想按指定的顺序进行。类似于 foreach (var issueType in groupByIssueType) { } 问题是顺序不是字母顺序,所以我不能只做一个简单的分析 OrderBy(r=>r.Name) 或者类似的事情。我需要一种按键对分组集合进行排序的方法,但要使用自定义

我有这样一段代码,它采用一个集合并按字符串字段分组:

 var groupByIssueType = issues.GroupBy(r => r.IssueType);
我现在想循环每个组,但我想按指定的顺序进行。类似于

foreach (var issueType in groupByIssueType)
{
}
问题是顺序不是字母顺序,所以我不能只做一个简单的分析

 OrderBy(r=>r.Name)
或者类似的事情。我需要一种按键对分组集合进行排序的方法,但要使用自定义排序算法

例如,让我们假设我有我的IssueTypes

“城市级”
“国家级”
“国家一级”

我想按国家、州、市的顺序遍历“groupbyIssueType”集合


最好的方法是什么?

您需要编写一个使用自定义排序顺序的
IComparer

例如:

static string[] order = { ... };
public int Compare(string x, string y) {
    return Array.IndexOf(order, x).CompareTo(Array.IndexOf(order, y));
}

您需要编写一个使用自定义排序顺序的
IComparer

例如:

static string[] order = { ... };
public int Compare(string x, string y) {
    return Array.IndexOf(order, x).CompareTo(Array.IndexOf(order, y));
}

在不创建新类、枚举或其他复杂逻辑的情况下对其进行编码的一种简单方法是创建一个按所需顺序排列的字符串列表或数组,例如

List<string> items = new List<string>() { "C", "A", "D", "E", "B" };

在不创建新类、枚举或其他复杂逻辑的情况下对其进行编码的一种简单方法是创建一个按所需顺序排列的字符串列表或数组,例如

List<string> items = new List<string>() { "C", "A", "D", "E", "B" };

我想这是我关于如何创建使用预定义有序列表的自定义Icomparer的问题。我想这是我关于如何创建使用预定义有序列表的自定义Icomparer的问题。