C# Tutorials and offshore development in India
    Tutorials   Resources   Forum   Communities   Interview   Jobs   Projects   Offshore Development    
Silverlight Tutorials | Mentor | Code Converter | Articles | Code Factory | Computer Jokes | Members | Peer Appraisal | IT Companies | Bookmarks | Revenue Sharing |


Prizes & Awards
My Profile



Active Members
TodayLast 7 Days more...

New Feature: Community Sites: Create your own .NET community website and start earning from Google AdSense ! It's Free !




Sorting a ArrayList in C#


Posted Date: 26 Dec 2005    Resource Type: Articles    Category: .NET Framework

Posted By: vivekthangaswamy       Member Level: Gold
Rating:     Points: 14



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.




Responses


No responses found. Be the first to respond and make money from revenue sharing program.

Feedbacks      
Popular Tags   What are tags ?   Search Tags  
Sorting Arraylists  .  Sorting an Arraylist in C#  .  Sorting an ArrayList  .  Sort an ArrayList in C#  .  Sort an ArrayList  .  

Post Feedback


This is a strictly moderated forum. Only approved messages will appear in the site. Please use 'Spell Check' in Google toolbar before you submit.
You must Sign In to post a response.
Next Resource: Effective use of Dataset
Previous Resource: Use Strong Collection Type while design class (Design own Collection data type)
Return to Discussion Resource Index
Post New Resource
Category: .NET Framework


Post resources and earn money!
 
Related Resources



dotNet Slackers   BizTalk Adaptors    Web Design

Help Desk

Contact Us    Privacy Policy    Terms Of Use