我在工作中遇到了這個問題,雖然我有解決方案,但我不禁感覺有一種更優雅的方式。 List.IndexOf()的使用對我來說有點難以理解。有沒有更好的方式來訂購IEnumerable以匹配任意排序?
我必須按信用評級排序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));
重複字符串就像評分打開數據完整性問題的可能性。你有沒有考慮過你的評價值的枚舉? – 2012-02-16 21:56:13
已經有一個枚舉了,我沒有在這裏使用它,因爲「低於CCC」不適合Enum。但問題是關於任意排序的更一般的觀點 – 2012-02-16 22:02:17
因此,您希望以相同的順序將任何CCC以下的任何東西集中在一起? – 2012-02-16 22:06:55