有没有更好的方法来命令IEnumerable匹配任意顺序?

Jon*_*all 3 c# linq ienumerable

我在工作中遇到了这个问题,虽然我有一个解决方案,但我不禁觉得有更优雅的方式.List.IndexOf()的使用对我来说有点骇人听闻.

我必须按信用评级对BreakdownItems进行排序.信用评级不遵循字母顺序,因此我将它们视为只是具有一些任意的非逻辑顺序.

IEnumerable<BreakdownItem> unsortedCreditRatings = new List<BreakdownItem>
        {
            new BreakdownItem{ Name = "CCC", Weight=20d},
            new BreakdownItem{ Name = "AA", Weight=20d},
            new BreakdownItem{ Name = "AAA", Weight=10d},
            new BreakdownItem{ Name = "B", Weight=50d},
        };

        var sortOrder = new List<string> 
    { "AAA", "AA", "A", "BBB", "BB", "B", "CCC", "below CCC" };

        var sortedRatingBreakdown = unsortedCreditRatings
           .OrderBy(item => sortOrder.IndexOf(item.Name));
Run Code Online (Sandbox Code Playgroud)

cad*_*ll0 5

您可以将信用评级设为枚举而不是字符串吗?然后,您可以为这些枚举值分配正确的排序顺序.