110,538
社区成员
发帖
与我相关
我的任务
分享
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
public class Matter
{
public string ProviderName;
public int MaClass;
public string MaName;
public int MaSize;
public override string ToString()
{
return string.Format("ProviderName:{0},MaClass:{1},MaName:{2},MaSize:{3}", ProviderName, MaClass, MaName, MaSize);
}
}
public enum MatterComparerType {
ProviderName, MaClass, MaName, MaSize
}
public enum SortOder {
Ascending,Descending
}
public class MatterComparer : IComparer<Matter>
{
public MatterComparerType Orderby;
public SortOder Order;
public MatterComparer(MatterComparerType orderby,SortOder order)
{
this.Orderby = orderby;
this.Order = order;
}
int CompareByProviderName(Matter x, Matter y) {
if (Order == SortOder.Ascending) return string.Compare(y.ProviderName, x.ProviderName);
return string.Compare(x.ProviderName, y.ProviderName);
}
int CompareByMaClass(Matter x, Matter y) {
if (Order == SortOder.Ascending) return y.MaClass - x.MaClass;
return x.MaClass - y.MaClass;
}
int CompareByMaName(Matter x, Matter y) {
if (Order == SortOder.Ascending) return string.Compare(y.MaName, x.MaName);
return string.Compare(x.MaName, y.MaName);
}
int CompareByMaSize(Matter x, Matter y) {
if (Order == SortOder.Ascending) return y.MaSize - x.MaSize;
return x.MaSize - y.MaSize;
}
#region IComparer<Matter> 成员
public int Compare(Matter x, Matter y)
{
switch (this.Orderby) {
case MatterComparerType.ProviderName: return CompareByProviderName(x, y);
case MatterComparerType.MaClass: return CompareByMaClass(x, y);
case MatterComparerType.MaName: return CompareByMaName(x, y);
case MatterComparerType.MaSize: return CompareByMaSize(x, y);
}
return 0;
}
#endregion
}
class Program
{
static void Main(string[] args)
{
List<Matter> list = new List<Matter>();
Matter m = new Matter();
m.ProviderName = "MS1";
m.MaClass = 111;
m.MaName = "CK5";
m.MaSize = 123;
list.Add(m);
m = new Matter();
m.ProviderName = "MS2";
m.MaClass = 13;
m.MaName = "CK4";
m.MaSize = 12213;
list.Add(m);
m = new Matter();
m.ProviderName = "MS3";
m.MaClass = 12;
m.MaName = "CK3";
m.MaSize = 1233;
list.Add(m);
m = new Matter();
m.ProviderName = "MS3";
m.MaClass = 1;
m.MaName = "CK2";
m.MaSize = 1123;
list.Add(m);
m = new Matter();
m.ProviderName = "MS5";
m.MaClass = 23;
m.MaName = "CK1";
m.MaSize = 123;
list.Add(m);
MatterComparer mc1 = new MatterComparer(MatterComparerType.MaSize,SortOder.Descending);
MatterComparer mc2 = new MatterComparer(MatterComparerType.MaName, SortOder.Descending);
MatterComparer mc3 = new MatterComparer(MatterComparerType.MaClass, SortOder.Descending);
MatterComparer mc4 = new MatterComparer(MatterComparerType.ProviderName, SortOder.Descending);
list.Sort(mc1);
list.Sort(mc2);
list.Sort(mc3);
list.Sort(mc4);
foreach (Matter ma in list)
{
Console.WriteLine(ma);
}
Console.Read();
}
}
}