2017-05-08 61 views
0

我有一系列KVP他們的價值觀可能是這樣的C#KVP排序 - 修改排序

[month],[January] 
[year],[1990] 
[month],[April] 
[year],[2001] 
[month],[February] 
[year],[1991] 
[month],[February] 
[year],[1992] 
[month],[April] 
[year],[2002] 
[month],[March] 
[year],[2000] 

他們需要進行排序這樣

[month],[January] 
[month],[April] 
[month],[February] 
[month],[February] 
[month],[April] 
[month],[March] 
[year],[1990] 
[year],[2001] 
[year],[1991] 
[year],[1992] 
[year],[2002] 
[year],[2000] 

這是排序功能

indexValuesToCountOnce.Sort((x, y) => x.Value.Length.CompareTo(y.Value.Length)); 

但是我發現代碼對我來說是不可預知的。它似乎首先按字符串月的長度排列月份列,而不是它在kvp中的順序。

有沒有辦法按照我需要的方式對此進行排序?

回答

2

看起來你只是想在關鍵的字母排序:

list = x.OrderBy(kvp => kvp.Key).ToList(); 
+0

問題巡航能力,難道是因爲我的列表是如何定義的? 'code' List > indexValuesToCountOnce = new List >(); – Krom

+0

@Krom這應該很好。只需在我的代碼中用'indexValuesToCountOnce'替換'x'並將'var'放在'list'前面。 – itsme86

+0

這需要使用System.Linq;我相信。我不在Visual Studio中,所以我不能只添加一個參考 – Krom