排序帮助类(包括对string[],int[],datatable,T[]进行排序) .

来源:互联网 发布:单片机mos管开关电路 编辑:程序博客网 时间:2024/05/19 01:32
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. using System.Reflection;  
  5. using System.Data;  
  6. namespace Zhuyi.Utility  
  7. {  
  8.     /// <summary>   
  9.     /// 排序帮助类(包括对string[],int[],datatable,T[]进行排序)  
  10.     /// </summary>   
  11.     public class SortUtil  
  12.     {  
  13.         /// <summary>   
  14.         /// 对int数组进行排序   
  15.         /// </summary>   
  16.         /// <param name="list">int数组</param>  
  17.         /// <param name="asc">是否按升序排列</param>  
  18.         public static void SortInt(int[] list, bool asc)  
  19.         {  
  20.             int obj;  
  21.             int j, k = 1;  
  22.             bool done = false;  
  23.             int len = list.Length;  
  24.             while (k < len && !done)  
  25.             {  
  26.                 done = true;  
  27.                 for (j = 0; j < len - k; j++)  
  28.                 {  
  29.                     int b = list[j].CompareTo(list[j + 1]);  
  30.                     if ((asc && b > 0) || (!asc && b < 0))  
  31.                     {  
  32.                         done = false;  
  33.                         obj = list[j];  
  34.                         list[j] = list[j + 1];  
  35.                         list[j + 1] = obj;  
  36.                     }  
  37.                 }  
  38.                 k++;  
  39.             }  
  40.         }  
  41.         /// <summary>   
  42.         /// 对string数组进行排序   
  43.         /// </summary>   
  44.         /// <param name="list">string数组</param>  
  45.         /// <param name="asc">是否按升序排列</param>  
  46.         public static void SortString(string[] list, bool asc)  
  47.         {  
  48.             string obj;  
  49.             int j, k = 1;  
  50.             bool done = false;  
  51.             int len = list.Length;  
  52.             while (k < len && !done)  
  53.             {  
  54.                 done = true;  
  55.                 for (j = 0; j < len - k; j++)  
  56.                 {  
  57.                     int b = list[j].CompareTo(list[j + 1]);  
  58.                     if ((asc && b > 0) || (!asc && b < 0))  
  59.                     {  
  60.                         done = false;  
  61.                         obj = list[j];  
  62.                         list[j] = list[j + 1];  
  63.                         list[j + 1] = obj;  
  64.                     }  
  65.                 }  
  66.                 k++;  
  67.             }  
  68.         }  
  69.         /// <summary>   
  70.         /// 对datatable进行排序,返回排序后的datatable  
  71.         /// </summary>   
  72.         /// <param name="dt">要排序的datatable</param>  
  73.         /// <param name="order">排序字段</param>  
  74.         /// <param name="asc">是否升序</param>  
  75.         /// <returns></returns>  
  76.         static DataTable SortDataTable(DataTable dt, string order, bool asc)  
  77.         {  
  78.             DataView view = dt.DefaultView;  
  79.             view.Sort = string.Format("{0} {1}", order, (asc ? "asc" : "desc"));  
  80.             return view.ToTable();  
  81.             /* 
  82.             DataRow[] rows = dt.Select("", order + " " + (asc ? "asc" : "desc")); 
  83.             DataTable dt2 = dt.Clone(); 
  84.             foreach (DataRow row in rows) 
  85.                 dt2.Rows.Add(row.ItemArray); 
  86.             dt.Clear(); 
  87.             return dt2; 
  88.             */  
  89.         }  
  90.         /// <summary>   
  91.         /// 对实体类进行排序   
  92.         /// </summary>   
  93.         /// <typeparam name="T">实体类型,如:User</typeparam>  
  94.         /// <param name="list">实体类的数组</param>  
  95.         /// <param name="order">排序字段(必须为属性)</param>  
  96.         /// <param name="asc">是否按正序排序</param>  
  97.         public static void Sort<T>(object[] list, string order, bool asc)  
  98.         {  
  99.             Type type = typeof(T);  
  100.             PropertyInfo[] pros = type.GetProperties();  
  101.             PropertyInfo pro = pros[0];  
  102.             order = order.ToLower();  
  103.             for (int i = 0; i < pros.Length; i++)  
  104.             {  
  105.                 if (pros[i].Name.ToLower().Equals(order))  
  106.                 {  
  107.                     pro = pros[i];  
  108.                     break;  
  109.                 }  
  110.             }  
  111.             object obj;  
  112.             int j, k = 1;  
  113.             bool done = false;  
  114.             int len = list.Length;  
  115.             while (k < len && !done)  
  116.             {  
  117.                 done = true;  
  118.                 for (j = 0; j < len - k; j++)  
  119.                 {  
  120.                     int b = pro.GetValue(list[j], null).ToString().CompareTo(pro.GetValue(list[j + 1], null).ToString());  
  121.                     if ((asc && b > 0) || (!asc && b < 0))  
  122.                     {  
  123.                         done = false;  
  124.                         obj = list[j];  
  125.                         list[j] = list[j + 1];  
  126.                         list[j + 1] = obj;  
  127.                     }  
  128.                 }  
  129.                 k++;  
  130.             }  
  131.         }  
  132.     }  
  133. }  

 

 

Zhuyi.Utility:

包括缓存操作、配置文件操作、cookie操作、日期时间操作、文本文件操作、HTML源码解析、图片裁剪/缩放、常用正则验证、加密/解密、http请求、xml读写、对数组的排序

 

原创粉丝点击