Introduction This article explains you how to customize sorting in ArrayList in C#. In this example I have put together a simple class called Category. A Category object one contains two member variables, one is Category Type and Category Type code.
Code snippet:
using System;
namespace ArrayListSORTING { public class Category { public string Type; public int TypeCode;
public Category() { }
public Category(string type, int tcode) { this.Type = type; this.TypeCode = tcode; } } }
Business logic For Sorting
Our comparer is called CategoryComparer, and we also have an enum called SortDirection which allows us to define whether we want to sort in an Ascending or in Descending order.
using System; using System.Collections;
namespace ArrayListSORTING {
public enum SortDirection { Asc, Desc }
public class CategoryComparer : IComparer {
private SortDirection m_direction = SortDirection.Asc;
public CategoryComparer() : base() { }
public CategoryComparer(SortDirection direction) { this.m_direction = direction; }
int IComparer.Compare(object x, object y) {
Category categoryX = (Category) x; Category categoryY = (Category) y;
if (categoryX == null && categoryY == null) { return 0; } else if (categoryX == null && categoryY != null) { return (this.m_direction == SortDirection.Asc) ? -1 : 1; } else if (categoryX != null && categoryY == null) { return (this.m_direction == SortDirection.Asc) ? 1 : -1; } else { return (this.m_direction == SortDirection.Asc) ? categoryX.TypeCode.CompareTo(categoryY.TypeCode) : categoryY.TypeCode.CompareTo(categoryX.TypeCode); } } } }
Testing With Sample Code
For testing our sample we need to create a new arraylist and we have to add some items in that arraylist and test it.
using System; using System.Collections;
namespace ArrayListSORTING {
class SortArrayList {
[STAThread] static void Main(string[] args) {
ArrayList list = new ArrayList();
list.Add(new Category("Music", 4)); list.Add(new Category("Play", 7)); list.Add(new Category("Dance", 2)); list.Add(new Category("Party", 9)); list.Add(new Category("Disco", 1)); list.Add(new Category("Sport", 3));
list.Sort(new CategoryComparer());
Console.WriteLine("Array in Ascending Order"); foreach (Category cate in list) { Console.WriteLine("CategoryName: " + cate.Type + ", CategoryCode: " + cate.TypeCode.ToString()); }
list.Sort(new CategoryComparer(SortDirection.Desc));
Console.WriteLine("\n\rArray in Desending Order"); foreach (Category cate in list) { Console.WriteLine("CategoryName: " + cate.Type + ", CategoryCode: " + cate.TypeCode.ToString()); } Console.ReadLine(); } } }
Tryout this sample with console application. And you can implement where ever you want, in your application.
|
No responses found. Be the first to respond and make money from revenue sharing program.
|