通过枚举名称订购查询结果

时间:2013-01-24 19:40:09

标签: c# linq enums

我有一个List<string>,其中包含以下条目:

  

“夏天”,“春天”,“冬天”

我想编写一个.OrderBy(),根据它来命令它们:

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

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

“春天”,“夏天”,“冬天”

编辑 - 为了澄清,并非每个客户都拥有所有可用的术语,但我只想在列表的排序中保持一致。

2 个答案:

答案 0 :(得分:5)

var q = l.OrderBy (x => Enum.Parse(typeof(Term), x));

答案 1 :(得分:3)

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();