其实重点在于实现 IComparer 接口,实现按照自已的来排序

class
 Entity
IList排序_listIList排序_null_02    
IList排序_ico_03{
IList排序_实例化_04        
public Entity()
IList排序_list_05IList排序_实例化_06        
IList排序_ico_03{}
IList排序_实例化_04        
private int id;
IList排序_实例化_04        
public int Id
IList排序_list_05IList排序_实例化_06        
IList排序_ico_03{
IList排序_实例化_04            
get
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                
return id;
IList排序_ico_18            }

IList排序_实例化_04            
set
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                id 
= value;
IList排序_ico_18            }

IList排序_ico_18        }

IList排序_实例化_04        
private string name;
IList排序_实例化_04        
public string Name
IList排序_list_05IList排序_实例化_06        
IList排序_ico_03{
IList排序_实例化_04            
get
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                
return name;
IList排序_ico_18            }

IList排序_实例化_04            
set
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                name 
= value;
IList排序_ico_18            }

IList排序_ico_18        }

IList排序_实例化_04
IList排序_实例化_04        
private double price;
IList排序_实例化_04        
public double Price
IList排序_list_05IList排序_实例化_06        
IList排序_ico_03{
IList排序_实例化_04            
get
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                
return price;
IList排序_ico_18            }

IList排序_实例化_04            
set
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                price 
= value;
IList排序_ico_18            }

IList排序_ico_18        }

IList排序_list_63    }

IList排序_list_64
IList排序_list_64

然后写一个对象比较的类,实现IComparer<T>接口。

IList排序_list_64     internal   class  ListComparer < TBaseBusinessObject >  : IComparer < TBaseBusinessObject >
IList排序_listIList排序_null_02    
IList排序_ico_03 {
IList排序_实例化_04        
private string propertyName;
IList排序_实例化_04
IList排序_实例化_04        
public ListComparer(string PropertyName)
IList排序_list_05IList排序_实例化_06        
IList排序_ico_03{
IList排序_实例化_04            propertyName 
= PropertyName;
IList排序_ico_18        }

IList排序_实例化_04        
IList排序_实例化_04
IList排序_实例化_06IList排序_list_05        
IComparer Members#region IComparer<TBaseBusinessObject> Members
IList排序_实例化_04
IList排序_实例化_04        
public int Compare(TBaseBusinessObject x, TBaseBusinessObject y)
IList排序_list_05IList排序_实例化_06        
IList排序_ico_03{
IList排序_实例化_04            PropertyInfo property 
= typeof(TBaseBusinessObject).GetProperty(propertyName);
IList排序_实例化_04            
if (property.PropertyType == Type.GetType("System.Int16"))
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                
int xNumber = 0;
IList排序_实例化_04                
int yNumber = 0;
IList排序_实例化_04                
if (property.GetValue(x, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    xNumber 
= Convert.ToInt16(property.GetValue(x, null).ToString());
IList排序_ico_18                }

IList排序_实例化_04                
if (property.GetValue(y, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    yNumber 
= Convert.ToInt16(property.GetValue(y, null).ToString());
IList排序_ico_18                }

IList排序_实例化_04                
return xNumber.CompareTo(yNumber);
IList排序_ico_18            }

IList排序_实例化_04            
if (property.PropertyType == Type.GetType("System.Int32"))
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                
int xNumber = 0;
IList排序_实例化_04                
int yNumber = 0;
IList排序_实例化_04                
if (property.GetValue(x, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    xNumber 
= Convert.ToInt32(property.GetValue(x, null).ToString());
IList排序_ico_18                }

IList排序_实例化_04                
if (property.GetValue(y, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    yNumber 
= Convert.ToInt32(property.GetValue(y, null).ToString());
IList排序_ico_18                }

IList排序_实例化_04                
return xNumber.CompareTo(yNumber);
IList排序_ico_18            }

IList排序_实例化_04            
if (property.PropertyType == Type.GetType("System.Double"))
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                
double xNumber = 0;
IList排序_实例化_04                
double yNumber = 0;
IList排序_实例化_04                
if (property.GetValue(x, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    xNumber 
= Convert.ToDouble(property.GetValue(x, null).ToString());
IList排序_ico_18                }

IList排序_实例化_04                
if (property.GetValue(y, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    yNumber 
= Convert.ToDouble(property.GetValue(y, null).ToString());
IList排序_ico_18                }

IList排序_实例化_04                
return xNumber.CompareTo(yNumber);
IList排序_ico_18            }

IList排序_实例化_04            
if (property.PropertyType == Type.GetType("System.DateTime"))
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                DateTime xTime 
= DateTime.Now;
IList排序_实例化_04                DateTime yTime 
= DateTime.Now;
IList排序_实例化_04                
if (property.GetValue(x, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    xTime 
= Convert.ToDateTime(property.GetValue(x, null).ToString());
IList排序_ico_18                }

IList排序_实例化_04                
if (property.GetValue(y, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    yTime 
= Convert.ToDateTime(property.GetValue(y, null).ToString());
IList排序_ico_18                }

IList排序_实例化_04                
return xTime.CompareTo(yTime);
IList排序_ico_18            }

IList排序_实例化_04            
if ((property.PropertyType == Type.GetType("System.String")) || (property.PropertyType == Type.GetType("System.Boolean")))
IList排序_list_05IList排序_实例化_06            
IList排序_ico_03{
IList排序_实例化_04                
string xText = string.Empty;
IList排序_实例化_04                
string yText = string.Empty;
IList排序_实例化_04                
if (property.GetValue(x, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    xText 
= property.GetValue(x, null).ToString();
IList排序_ico_18                }

IList排序_实例化_04                
if (property.GetValue(y, null!= null)
IList排序_list_05IList排序_实例化_06                
IList排序_ico_03{
IList排序_实例化_04                    yText 
= property.GetValue(y, null).ToString();
IList排序_ico_18                }

IList排序_实例化_04                
return xText.CompareTo(yText);
IList排序_ico_18            }

IList排序_实例化_04            
return 0;
IList排序_实例化_04
IList排序_ico_18        }

IList排序_实例化_04
IList排序_ico_18        
#endregion

IList排序_list_63    }

IList排序_list_64

然后是写了一个List继承List<T>类的集合,

IList排序_list_64     public   class  BaseBusinessObjectList < TBaseBusinessObject >  : List < TBaseBusinessObject >
IList排序_listIList排序_null_02    
IList排序_ico_03 {
IList排序_实例化_04        
public void Sort(string sortfield, bool isAscending)
IList排序_list_05IList排序_实例化_06        
IList排序_ico_03{
IList排序_实例化_04            
//这里实例化了刚才写的IComparer类。
IList排序_实例化_04
            ListComparer<TBaseBusinessObject> listComparer = new ListComparer<TBaseBusinessObject>(sortfield);
IList排序_实例化_04            
base.Sort(listComparer);
IList排序_实例化_04            
if (!isAscending) base.Reverse();
IList排序_ico_18        }

IList排序_list_63    }

IList排序_list_64
IList排序_list_64

于是就写完了,用的时候

IList排序_list_64    BaseBusinessObjectList < Entity >  list  =   new  BaseBusinessObjectList < Entity > ();
IList排序_list_64    Entity obj 
=   new  Entity();
IList排序_list_64    obj.Id 
=   1 ;
IList排序_list_64    obj.Name 
=   " test " ;
IList排序_list_64    obj.Price 
=   3.23 ;
IList排序_list_64    list.Add(obj);
IList排序_list_64
IList排序_list_64    
// 按照Name字段向上排序。
IList排序_list_64
    list.Sort( " Name " , true );
IList排序_list_64    
// 按照Price字段向上排序。
IList排序_list_64
    list.Sort( " Price " , true );
IList排序_list_64    
// 按照Id字段向下排序。
IList排序_list_64
    list.Sort( " Id " , false );
IList排序_list_64

完了~~~