You can sort a generic List in C# using different methods. Here I cover only two options which I found them most handy. The third option is to put the method into a class that implements the IComparer interface.
using System;
using System.Collections.Generic;
public class SortingList
{
/// <summary>
/// SortingList: This snippet code demonstrates the delegate method of sorting lists
/// I define an Item type having some fields and sort based on a preferred field
/// To do so I need to implement a method would be called during the sort action for each pair.
///
/// NOTE: You could also create a class implementing IComparer and use the class to pass to the Sort method.
///
/// Asghar Panahy
/// 07-12-2007
/// </summary>
public static void Main()
{
List<Item> list = new List<Item>();
// Adding some dummy items
list.Add(new Item("6", " Asghar 1"));
list.Add(new Item("5", " Asghar 2"));
list.Add(new Item("3", " Asghar 3"));
list.Add(new Item("4", " Asghar 4"));
list.Add(new Item("2", " Asghar 5"));
list.Add(new Item("1", " Asghar 6"));
Console.WriteLine("Dumping the list:");
DumpList(list);
// Sorting it by ID
list.Sort(SortByID);
Console.WriteLine("Dumping the list:");
DumpList(list);
// Second Option, using anonimous methods
// Sorting it by Birthday
list.Sort(
delegate (Item i1, Item i2)
{
return i1.Birthday.CompareTo(i2.Birthday);
}
);
Console.WriteLine("Dumping the list:");
DumpList(list);
// Wait for response before closing it
Console.ReadLine();
}
public static int SortByID(Item s1, Item s2)
{
return s1.ID.CompareTo(s2.ID);
}
public static void DumpList(List<Item> list)
{
foreach(Item l in list)
{
Console.WriteLine(l);
}
}
}
// Sample Class
public class Item
{
public Item(string id, string name)
{
this.ID = id;
this.Name = name;
this.Birthday = DateTime.Now;
}
public string Name;
public string ID;
public DateTime Birthday;
public override string ToString()
{
return String.Format("{0} is born on {1}", this.Name, this.Birthday.ToLocalTime());
}
}
}
4 comments:
Great examples exactly what I was looking for!
Hi, its a nice post it tells us about c#, You may have noticed that a Skip List is sort of like a LinkedList. That is exactly correct, skip lists in a series of LinkedLists stacked on top of each other. If you don' t know what a LinkedList is, don't worry about it.
Thanks for this nice sharing.
husle
Hi,
Your post was very worthful. Please keep posting. helps an n mumber of people like me. Thank you very much
Post a Comment