按枚举名称对查询结果进行排序

本文关键字:结果 排序 查询 枚举 | 更新日期: 2023-09-27 17:56:07

我有一个包含以下条目的List<string>

"夏天"、"春天"、"冬天"

我想写一个.OrderBy() 基于此对它们进行排序:

public enum Term {
    Spring = 0, Summer, Fall, Winter, All
}

因此,我希望看到的结果是:

"春天"、"夏天"、"冬天"

编辑 - 为了澄清起见,并非每个客户都有所有可用术语,但我只希望列表排序的一致性。

按枚举名称对查询结果进行排序

var q = l.OrderBy (x => Enum.Parse(typeof(Term), x));
List<string> terms = new List<string> { "Summer", "Spring", "Winter" };
var enumNames = Enum.GetNames(typeof(Term))
                    .OrderBy(s=>Enum.Parse(typeof(Term),s))
                    .ToList();
var orderedList = terms.OrderBy(s => enumNames.IndexOf(s)).ToList();