对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;
}
}
}