Sort
KeyValuePair
List
A List
contains many KeyValuePair
struct
instances. It can be sorted with the Sort
List
method. For advanced sorting, we need Comparison
.
Comparison
infoThis code requires Comparison
delegate implementations. We implement these as static
int
methods that call CompareTo
.
Compare1
receives two KeyValuePair
structs and returns the result of CompareTo
on their Key. Compare2
returns the CompareTo
of the Value.
List
of KeyValuePair
instances is created. Three KeyValuePairs
are created and added to the List
.List
is sorted with Compare1
. The method target Compare1
is accepted as a Comparison
delegate.List
, we sort it again with Compare2
, and finally display the List
again.using System; using System.Collections.Generic; class Program { static int Compare1(KeyValuePair<string, int> a, KeyValuePair<string, int> b) { return a.Key.CompareTo(b.Key); } static int Compare2(KeyValuePair<string, int> a, KeyValuePair<string, int> b) { return a.Value.CompareTo(b.Value); } static void Main() { var list = new List<KeyValuePair<string, int>>(); list.Add(new KeyValuePair<string, int>("Perl", 7)); list.Add(new KeyValuePair<string, int>("Net", 9)); list.Add(new KeyValuePair<string, int>("Dot", 8)); // Use Compare1 as comparison delegate. list.Sort(Compare1); foreach (var pair in list) { Console.WriteLine(pair); } Console.WriteLine(); // Use Compare2 as comparison delegate. list.Sort(Compare2); foreach (var pair in list) { Console.WriteLine(pair); } } }[Dot, 8] [Net, 9] [Perl, 7] [Perl, 7] [Dot, 8] [Net, 9]
Program
resultsThe List.Sort
(Compare1
) call sorts the List
by the Key of the KeyValuePair
. And the List.Sort
(Compare2
) call sorts the List
by the Value int
.
Compare1 -> Key Compare2 -> Value
We sorted collections of KeyValuePairs
. We can use other syntax forms and implementations, such as LINQ expressions or lambda expressions, to accomplish this task.