You can do this with Array List...
public class SortStringLength : IComparer
{
public int Compare(Object s1, Object s2)
{
if (s1.ToString().Length == s2.ToString().Length)
return String.CompareOrdinal(s1.ToString(), s2.ToString());
if (s1.ToString().Length > s2.ToString().Length)
return 1;
return -1;
}
}
And, then to use the IComparer...
static void Main(string[] args)
{
var weasleys = new ArrayList { "Bill", "Charlie", "Percy",
"Fred", "George", "Ron", "Ginny" };
var sortLength = new SortStringLength();
weasleys.Sort(sortLength);
foreach (var weasley in weasleys)
{
Console.WriteLine(weasley);
}
Console.ReadLine();
}
With List...
public class SortStringLength : IComparer<string>
{
public int Compare(string x, string y)
{
if (x.Length == y.Length)
return String.CompareOrdinal(x, y);
if (x.Length > y.Length)
return 1;
return -1;
}
}
and usage...
static void Main(string[] args)
{
var weasleys = new List<string> { "Bill", "Charlie", "Percy",
"Fred", "George", "Ron", "Ginny" };
var sortLength = new SortStringLength();
weasleys.Sort(sortLength);
foreach (var weasley in weasleys)
{
Console.WriteLine(weasley);
}
Console.ReadLine();
}
Tclass.