SortedDictionary сортирует по ключу, а не по значению.
Вот чистый способ, чтобы изменить порядок значений в словаре:
List<KeyValuePair<string, string>> srcList = aDictionary.ToList();
srcList.Sort(
delegate(KeyValuePair<string, string> firstPair,
KeyValuePair<string, string> nextPair)
{
return firstPair.Value.CompareTo(nextPair.Value);
}
);
Dictionary<string, string> outputDictionary = new Dictionary<string, string>();
int listCount = srcList.Count;
for(int i = 0; i < listCount; i++) {
int valueIndex = i + 1;
outputDictionary.Add(srcList[i].Key, srcList[valueIndex]);
}
Если то, что вы хотите в качестве вывода является Список KeyValuePairs, а не в словарь, вы можете заменить заключительные 6 строк кода в моем примере с этим:
List<KeyValuePair<string, string>> destList = new List<KeyValuePair<string, string>>();
int listCount = srcList.Count;
for(int i = 0; i < listCount; i++) {
int valueIndex = i + 1;
destList.Add(new KeyValuePair<string, string>(srcList[i].Key, srcList[valueIndex]));
}
массив словарей ???как вы его определили, можете ли вы опубликовать некоторый код? – Habib
Возможный дубликат [Сортировка списка в C# (с различными параметрами)] (http://stackoverflow.com/questions/4971601/sorting-a-list-in-c-sharp-with-various-parameters) – Sayse
Показать, что вы попробовали. – Sayse