- 对Dictionary进行排序主要利用了查询表达式LINQ。
using System;
using System.Collections.Generic;
using System.Linq;
namespace _03
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("*****按添加顺序排列*****");
Dictionary<object, object> dictionary = new Dictionary<object, object>();
dictionary.Add(1, "c");
dictionary.Add(3, "a");
dictionary.Add(2, "b");
foreach (var item in dictionary)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("*****按Key升序排列*****");
Dictionary<object, object> ascSortByKey = Test.AscSortByKey(dictionary);
foreach (var item in ascSortByKey)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("*****按Value升序排列*****");
Dictionary<object, object> ascSortByValue = Test.AscSortByValue(dictionary);
foreach (var item in ascSortByValue)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("*****按Key降序排列*****");
Dictionary<object, object> descSortByKey = Test.DescSortByKey(dictionary);
foreach (var item in descSortByKey)
{
Console.WriteLine(item);
}
Console.WriteLine();
Console.WriteLine("*****按Value降序排列*****");
Dictionary<object, object> descSortByValue = Test.DescSortByValue(dictionary);
foreach (var item in descSortByValue)
{
Console.WriteLine(item);
}
Console.WriteLine();
}
}
class Test
{
public static Dictionary<K, V> AscSortByKey<K, V>(Dictionary<K, V> dictionary)
{
var result = from obj in dictionary orderby obj.Key select obj;
Dictionary<K, V> ascSortByKey = new Dictionary<K, V>();
foreach (var item in result)
{
ascSortByKey.Add(item.Key, item.Value);
}
return ascSortByKey;
}
public static Dictionary<K, V> AscSortByValue<K, V>(Dictionary<K, V> dictionary)
{
var result = from obj in dictionary orderby obj.Value select obj;
Dictionary<K, V> ascSortByValue = new Dictionary<K, V>();
foreach (var item in result)
{
ascSortByValue.Add(item.Key, item.Value);
}
return ascSortByValue;
}
public static Dictionary<K, V> DescSortByKey<K, V>(Dictionary<K, V> dictionary)
{
var result = from obj in dictionary orderby obj.Key descending select obj;
Dictionary<K, V> descSortByKey = new Dictionary<K, V>();
foreach (var item in result)
{
descSortByKey.Add(item.Key, item.Value);
}
return descSortByKey;
}
public static Dictionary<K, V> DescSortByValue<K, V>(Dictionary<K, V> dictionary)
{
var result = from obj in dictionary orderby obj.Value descending select obj;
Dictionary<K, V> descSortByValue = new Dictionary<K, V>();
foreach (var item in result)
{
descSortByValue.Add(item.Key, item.Value);
}
return descSortByValue;
}
}
}
