This C# program demonstrates how to sort a list with a comparison function.
using System; using System.Collections.Generic; namespace XoaX { public class CChristianMartyr { public string msName; public int miYearOfMartyrdom; // Constructor public CChristianMartyr(string sName, int iYearOfMartyrdom) { msName = sName; miYearOfMartyrdom = iYearOfMartyrdom; } } class Program { static void Main(string[] args) { List<CChristianMartyr> qMartyrs = new List<CChristianMartyr>(); qMartyrs.Add(new CChristianMartyr("Saint Julian", 250)); qMartyrs.Add(new CChristianMartyr("Saint Lorenzo Ruiz", 1637)); qMartyrs.Add(new CChristianMartyr("Saint Apollonius", 305)); qMartyrs.Add(new CChristianMartyr("Saint Justin Martyr", 165)); qMartyrs.Add(new CChristianMartyr("Saint Laura", 864)); qMartyrs.Add(new CChristianMartyr("Saint John Boste", 1594)); qMartyrs.Add(new CChristianMartyr("Saint Flavius", 300)); Console.WriteLine("Unsorted:"); Console.WriteLine("---------"); foreach (CChristianMartyr qMartyr in qMartyrs) { Console.WriteLine(qMartyr.msName + " was martyred in " + qMartyr.miYearOfMartyrdom + " AD"); } Console.WriteLine(""); // Sort the list using an inline delegate based on the name qMartyrs.Sort(delegate(CChristianMartyr qM1, CChristianMartyr qM2) { if (qM1.msName == null && qM2.msName == null) return 0; else if (qM1.msName == null) return -1; else if (qM2.msName == null) return 1; else return qM1.msName.CompareTo(qM2.msName); }); Console.WriteLine("Sorted by name:"); Console.WriteLine("---------------"); foreach (CChristianMartyr qMartyr in qMartyrs) { Console.WriteLine(qMartyr.msName + " was martyred in " + qMartyr.miYearOfMartyrdom + " AD"); } Console.WriteLine(""); } } }
Unsorted: --------- Saint Julian was martyred in 250 AD Saint Lorenzo Ruiz was martyred in 1637 AD Saint Apollonius was martyred in 305 AD Saint Justin Martyr was martyred in 165 AD Saint Laura was martyred in 864 AD Saint John Boste was martyred in 1594 AD Saint Flavius was martyred in 300 AD Sorted by name: --------------- Saint Apollonius was martyred in 305 AD Saint Flavius was martyred in 300 AD Saint John Boste was martyred in 1594 AD Saint Julian was martyred in 250 AD Saint Justin Martyr was martyred in 165 AD Saint Laura was martyred in 864 AD Saint Lorenzo Ruiz was martyred in 1637 AD Press any key to continue . . .
© 20072024 XoaX.net LLC. All rights reserved.