/*
* In application code
*/
// Declare a variable for data
public static ListrecordList = new List ();
// Set a list
// For example,
// 2/11/2009, apple, 20
// 2/10/2009, banana, 5
// 1/30/2009, pineapple, 3
recodeList.Add(new clsDataRecord(DateTimeVar1, TextVar1, IntVar1));
recodeList.Add(new clsDataRecord(DateTimeVar2, TextVar2, IntVar2));
recodeList.Add(new clsDataRecord(DateTimeVar3, TextVar3, IntVar3));
// Call sorting by date
clsDataRecord.CompType = clsDataRecord.ComparisonType.Date;
Program.altRecordList.Sort();
// Sorted result will be
// 1/30/2009, pineapple, 3
// 2/10/2009, banana, 5
// 2/11/2009, apple, 20
// Call sorting by text
clsDataRecord.CompType = clsDataRecord.ComparisonType.Text;
Program.altRecordList.Sort();
// Sorted result will be
// 2/11/2009, apple, 20
// 2/10/2009, banana, 5
// 1/30/2009, pineapple, 3
// Call sorting by number
clsDataRecord.CompType = clsDataRecord.ComparisonType.Number;
Program.altRecordList.Sort();
// Sorted result will be
// 1/30/2009, pineapple, 3
// 2/10/2009, banana, 5
// 2/11/2009, apple, 20
/*
* Class for clsDataRecord
*/
using System;
using System.Collections;
class clsDataRecord : IComparable
{
public enum ComparisonType
{
Date = 1,
Text = 2,
Number = 3
};
// This class has three different members.
// You can customize these with your own data.
private DateTime _date;
private string _text;
private int _number;
private static ComparisonType _compType;
public clsDataRecord(DateTime date, string text, int number)
{
_date = date;
_text = text;
_number = number;
}
public DateTime Date
{
get { return _date; }
set { _date = value; }
}
public string Text
{
get { return _text; }
set { _text = value; }
}
public int Number
{
get { return _number; }
set { _number = value; }
}
public static ComparisonType CompType
{
get { return _compType; }
set { _compType = value; }
}
public override string ToString()
{
return String.Format("{0} - {1} - {2}", _date.ToShortDateString(), _text, _number.ToString());
}
public int CompareTo(object obj)
{
if (obj is clsDataRecord)
{
clsDataRecord r2 = (clsDataRecord)obj;
switch (_compType)
{
case ComparisonType.Date:
return _date.CompareTo(r2.Date);
case ComparisonType.Text:
return _text.CompareTo(r2.Text);
case ComparisonType.Number:
default:
return _number.CompareTo(r2.Number);
}
}
else
throw new ArgumentException("Object is not an clsDataRecord.");
}
}
Wednesday, February 11, 2009
Sorting 2D string list in C#
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment