精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

講述C# List排序用法的小細節

開發 后端
這里將介紹C# List排序的一些小用法,包括自定義類數組或List進行排序,希望本文能對大家有所幫助。
C# List排序一般用到的是繼承IComparer<T>接口,實現int IComparer<T>.Compare(T t1, T t2)方法。一般用到C# List排序的地方都比較多。

由于項目的原因用到了List<T> 泛型,Framework都已經到了3.5了。可是我一直都沒有正式的用過2.0很是遺憾。

特別是對泛型更是一知半解,今天又弄了些資料覺得挺有用就收集到博客上來了。

閑話少敘,今天用到的List<T>的Sort功能純屬是從高人那里得來的,只是進行了少量的改動而已。

要對自定義類數組或List進行排序,譬如:

List<User> userList;

ArrayList arrayList;

最重要的是:繼承IComparer<T>接口,實現int IComparer<T>.Compare(T t1, T t2)方法。

代碼如下:

  1. /**//// <summary>  
  2. /// 繼承IComparer<T>接口,實現同一自定義類型 對象比較  
  3. /// </summary>  
  4. /// <typeparam name="T">T為泛用類型</typeparam>  
  5. public class Reverser<T> : IComparer<T>  
  6. ...{  
  7. private Type type = null;  
  8. private ReverserInfo info;  
  9.  
  10. /**//// <summary>  
  11. /// 構造函數  
  12. /// </summary>  
  13. /// <param name="type">進行比較的類類型</param>  
  14. /// <param name="name">進行比較對象的屬性名稱</param>  
  15. /// <param name="direction">比較方向(升序/降序)</param>  
  16. public Reverser(Type type, string name, ReverserInfo.Direction direction)  
  17. ...{  
  18. this.type = type;  
  19. this.info.name = name;  
  20. if (direction != ReverserInfo.Direction.ASC)  
  21. this.info.direction = direction;  
  22. }  
  23.  
  24. /**//// <summary>  
  25. /// 構造函數  
  26. /// </summary>  
  27. /// <param name="className">進行比較的類名稱</param>  
  28. /// <param name="name">進行比較對象的屬性名稱</param>  
  29. /// <param name="direction">比較方向(升序/降序)</param>  
  30. public Reverser(string className, string name, ReverserInfo.Direction direction) ...{  
  31. try 
  32. ...{  
  33. this.type = Type.GetType(className, true);  
  34. this.info.name = name;  
  35. this.info.direction = direction;  
  36. }  
  37. catch (Exception e)...{  
  38. throw new Exception(e.Message);  
  39. }  
  40. }  
  41.  
  42. /**//// <summary>  
  43. /// 構造函數  
  44. /// </summary>  
  45. /// <param name="t">進行比較的類型的實例</param>  
  46. /// <param name="name">進行比較對象的屬性名稱</param>  
  47. /// <param name="direction">比較方向(升序/降序)</param>  
  48. public Reverser(T t, string name, ReverserInfo.Direction direction)  
  49. ...{  
  50. this.type = t.GetType();  
  51. this.info.name = name;  
  52. this.info.direction = direction;  
  53. }  
  54.  
  55. //必須!實現IComparer<T>的比較方法。  
  56. int IComparer<T>.Compare(T t1, T t2)  
  57. ...{  
  58. object x = this.type.InvokeMember(this.info.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, t1, null);  
  59. object y = this.type.InvokeMember(this.info.name, BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty, null, t2, null);  
  60. if (this.info.direction != ReverserInfo.Direction.ASC)  
  61. Swap(ref x, ref y);  
  62. return (new CaseInsensitiveComparer()).Compare(x, y);  
  63. }  
  64.  
  65. //交換操作數  
  66. private void Swap(ref object x, ref object y)  
  67. ...{  
  68. object temp = null;  
  69. temp = x;  
  70. x = y;  
  71. y = temp;  
  72. }  
  73. }  
  74.  
  75. /**//// <summary>  
  76. /// 對象比較時使用的信息類  
  77. /// </summary>  
  78. public struct ReverserInfo  
  79. ...{  
  80. /**//// <summary>  
  81. /// 比較的方向,如下:  
  82. /// ASC:升序  
  83. /// DESC:降序  
  84. /// </summary>  
  85. public enum Direction  
  86. ...{  
  87. ASC = 0,  
  88. DESC,  
  89. };  
  90.  
  91. public enum Target  
  92. ...{  
  93. CUSTOMER = 0,  
  94. FORM,  
  95. FIELD,  
  96. SERVER,  
  97. };  
  98.  
  99. public string name;  
  100. public Direction direction;  
  101. public Target target;  

上面主要是運用了C#的反射 和 Framework中的排序算法。

像上面那樣實現接口后,就可以使用List<T>進行升序/降序 排序了。

測試代碼如下:

  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Collections;  
  4. using System.Reflection;  
  5. using System.Text;  
  6.  
  7. namespace List_T_SortTest_u_2  
  8. ...{ 

測試Reverser代碼段#region 測試Reverser<T>代碼段

  1. /**//// <summary>  
  2. /// 實體類User,測試用  
  3. /// </summary>  
  4. public class User  
  5. ...{  
  6. protected string _name;  
  7. protected int _age;  
  8. protected string _address;  
  9.  
  10. public User(string name, int age, string address)  
  11. ...{  
  12. this._name = name;  
  13. this._age = age;  
  14. this._address = address;  
  15. }  
  16.  
  17. public string Name  
  18. ...{  
  19. get ...{ return _name; }  
  20. set ...{ _name = value; }  
  21. }  
  22.  
  23. public int Age  
  24. ...{  
  25. get ...{ return _age; }  
  26. set ...{ _age = value; }  
  27. }  
  28.  
  29. public string Address  
  30. ...{  
  31. get ...{ return _address; }  
  32. set ...{ _address = value; }  
  33. }  
  34. }  
  35.  
  36. /**//// <summary>  
  37. /// 主程序類(啟動類),測試用  
  38. /// </summary>  
  39. class Program  
  40. ...{  
  41. static void Main(string[] args)  
  42. ...{  
  43. List<User> userList = new List<User>();  
  44. User user;  
  45.  
  46. user = new User("Wang", 21, "ShenYang");  
  47. userList.Add(user);  
  48. user = new User("Yan", 27, "JinZhou");  
  49. userList.Add(user);  
  50. user = new User("Liu", 26, "BeiJing");  
  51. userList.Add(user);  
  52. user = new User("Zhao", 30, "ChaoYang");  
  53. userList.Add(user);  
  54. user = new User("Yang", 27, "FuXin");  
  55. userList.Add(user);  
  56.  
  57. //for (int i = 0; i < ar.Count; i++ )  
  58. //    ;  
  59. Console.Write("Name     ");  
  60. Console.Write("Age      ");  
  61. Console.Write("Address  " + " " + " ");  
  62. Console.WriteLine("-----------------------");  
  63. foreach (User u in userList)  
  64. ...{  
  65. Console.Write(u.Name + "    ");  
  66. Console.Write(u.Age + "    ");  
  67. Console.Write(u.Address + "    " + " ");  
  68. }  
  69. Console.WriteLine();  
  70.  
  71. Reverser<User> reverser = new Reverser<User>(user.GetType(), "Name", ReverserInfo.Direction.DESC);  
  72. userList.Sort(reverser);  
  73. Console.WriteLine();  
  74. foreach (User u in userList)  
  75. ...{  
  76. Console.Write(u.Name + "    ");  
  77. Console.Write(u.Age + "    ");  
  78. Console.Write(u.Address + "    " + " ");  
  79. }  
  80. Console.WriteLine();  
  81.  
  82. reverser = new Reverser<User>(user.GetType(), "Age", ReverserInfo.Direction.ASC);  
  83. userList.Sort(reverser);  
  84. Console.WriteLine();  
  85. foreach (User u in userList)  
  86. ...{  
  87. Console.Write(u.Name + "    ");  
  88. Console.Write(u.Age + "    ");  
  89. Console.Write(u.Address + "    " + " ");  
  90. }  
  91.  
  92. Console.Read();  
  93. }  
  94. }  
  95. #endregion  

以上C# List排序全部完成!另外,各位觀眾,小弟剛開始接觸Framework2.0,也是生硬的套用高人的代碼,難免會有錯誤。

還請各位指正。謝謝先。

【編輯推薦】

  1. C# Attribute的概念與使用淺析
  2. C# AttributeUsage的使用淺析
  3. 淺析Attribute在C# WinForm控件開發中的使用
  4. 淺談C#控件屬性串行化的實現
  5. C#實例詳解TypeConverterAttribute應用
責任編輯:彭凡 來源: CSDN
相關推薦

2009-09-27 11:14:09

C#數組

2009-09-27 10:46:30

C#控件數組

2024-09-18 05:35:00

LINQC#

2011-05-23 13:27:53

2009-09-18 09:35:36

C# CLR

2009-10-26 09:50:11

C#與VB.NET

2009-09-07 16:13:56

C# MessageB

2009-08-20 17:17:02

C#哈希表

2009-07-30 15:24:13

C#析構函數C#構造函數

2009-09-10 16:30:11

C#排序函數

2024-09-18 08:00:05

C#編程

2009-08-26 14:01:33

C# using用法

2009-08-10 16:19:37

C#冒泡排序

2011-04-25 14:42:10

C#lock

2009-08-26 18:13:55

C#多線程lock

2009-08-26 18:10:44

C# using的用法

2009-08-26 14:48:21

C#打印分頁

2011-07-06 10:47:52

C#using

2009-09-14 18:11:23

C#排序方法

2009-08-03 17:38:12

排序算法C#數據結構
點贊
收藏

51CTO技術棧公眾號

精品一级毛片| 九九九伊在线综合永久| av电影天堂一区二区在线观看| 羞羞色国产精品| 色欲狠狠躁天天躁无码中文字幕| 日韩久久99| 欧美日韩精品在线视频| 一区二区三区四区五区视频| 亚洲精品国产av| 日韩成人一区二区| 欧美国产亚洲精品久久久8v| 尤物视频最新网址| 一区二区日韩| 欧美日韩精品欧美日韩精品| 青青青青草视频| 黄色片免费在线观看| 成人高清在线视频| 成人黄色av播放免费| 精品国产乱码一区二区| 亚洲女同一区| 亚洲午夜性刺激影院| 国产午夜在线一区二区三区| 国产黄色一区| 色婷婷一区二区| 黄网站欧美内射| 国产精品一卡二卡三卡| 久久精品视频一区二区三区| 国产精品久久久对白| 国产精品视频在线观看免费| 久久久久久一区二区| 欧美激情在线播放| 国产黄色的视频| 日韩三级在线| 亚洲色图25p| 影音先锋人妻啪啪av资源网站| 国产日本亚洲| 欧美日韩亚洲综合一区| 91黄色小网站| 在线观看爽视频| 午夜天堂影视香蕉久久| 成人手机在线播放| 麻豆影院在线| 亚洲欧美一区二区在线观看| 日本亚洲导航| 日韩在线无毛| 久久视频一区二区| 久久久久成人精品免费播放动漫| 东京干手机福利视频| 国产一区二区0| 国产在线视频一区| 国产精品熟女久久久久久 | 国产精品视频二| 理论片午午伦夜理片在线播放| 亚洲国产高清不卡| 亚洲一区尤物| 久久黄色美女电影| 亚洲精品菠萝久久久久久久| 91成人在线视频观看| 黄色的网站在线观看| 亚洲女同女同女同女同女同69| 一区二区高清视频| 国产不卡在线| 亚洲一区二区三区在线播放| 国产欧美日韩小视频| 爱福利在线视频| 午夜精品一区二区三区三上悠亚| 免费不卡av在线| 国产三级电影在线播放| 欧美性videos高清精品| 成人在线免费播放视频| 成人免费一区| 日韩午夜精品视频| 最新国产精品自拍| 欧美a大片欧美片| 亚洲一区二区国产| 黄色香蕉视频在线观看| 国内久久精品| 日本成人激情视频| 亚洲自拍偷拍另类| 粉嫩蜜臀av国产精品网站| 激情欧美一区二区三区中文字幕 | 综合av色偷偷网| 日本中文在线视频| 亚洲国产午夜| 国产精品极品尤物在线观看| 一区二区三区精彩视频| 岛国精品一区二区| 欧美一级爱爱| 久久日韩视频| 欧美性xxxx极品hd满灌| 欧美成人三级在线播放| 在线播放一区二区精品视频| 亚洲一区二区黄| 免费一级片视频| 肉肉av福利一精品导航| 亚洲精品欧美日韩| 日本午夜在线视频| 亚洲精品自拍动漫在线| 国产成人久久婷婷精品流白浆| 伊人国产精品| 日韩精品黄色网| av成人免费网站| 日日骚欧美日韩| www.成人av| 免费在线观看av| 欧美视频二区36p| 久久综合桃花网| 欧美系列电影免费观看| 欧美精品激情blacked18| 在线播放亚洲精品| 91免费精品国自产拍在线不卡| 热这里只有精品| 韩国美女久久| 精品国产免费视频| 久久高清内射无套| 日韩**一区毛片| 精品国产乱码久久久久软件| www国产在线观看| 欧美中文字幕不卡| aaaaa一级片| 国产精品九九| 亚洲a成v人在线观看| 色老头视频在线观看| 日韩欧美在线视频日韩欧美在线视频| 下面一进一出好爽视频| 欧美www视频在线观看| 日本午夜精品理论片a级appf发布| 亚洲第一视频在线| 亚洲蜜臀av乱码久久精品蜜桃| 91在线视频观看免费| 偷拍视屏一区| 97精品国产97久久久久久春色 | 国产精品一区二区视频| 日韩影视精品| jk漫画禁漫成人入口| 日韩免费看网站| xxxx日本少妇| 精品一区二区三区香蕉蜜桃 | 伊人久久大香线| 国产精品免费看久久久香蕉| 精品电影在线| 日韩欧美国产中文字幕| 亚洲美女在线播放| 狠狠综合久久av一区二区老牛| 成人免费直播live| 午夜视频成人| 欧美日韩中文字幕精品| 日韩一级片在线免费观看| 视频一区二区不卡| 日本一区二区三区视频在线观看 | 国产精品色婷婷视频| 黄色av免费在线观看| 色综合天天综合在线视频| av无码av天天av天天爽| 亚洲欧美日本国产专区一区| 欧美亚洲另类久久综合| 在线看欧美视频| 久久精品国产免费观看| 国产同性人妖ts口直男| 亚洲一区二区三区四区的| 少妇被狂c下部羞羞漫画| 亚洲一区免费| 视频一区三区| 国产精久久一区二区| 九九热99久久久国产盗摄| 亚洲国产成人精品一区二区三区| 亚洲国产中文字幕| 人妻熟女aⅴ一区二区三区汇编| 午夜在线a亚洲v天堂网2018| 欧美日韩中文国产一区发布| 国产在视频一区二区三区吞精| 久久精品国产电影| 欧日韩在线视频| 色综合色狠狠综合色| 岛国片在线免费观看| 国产精品系列在线观看| 一区二区传媒有限公司| 精品亚洲成人| 99爱精品视频| 视频二区不卡| 免费99精品国产自在在线| 天堂在线观看视频| 欧美性感一类影片在线播放| 国产精品九九九九九九| 91免费观看视频| 亚洲精品永久视频| 亚洲日韩成人| 一区二区视频在线免费| 韩国精品福利一区二区三区| 国产成人精品999| 青草青在线视频| 亚洲欧洲在线看| 精品人妻伦一二三区久久 | 国产又大又黑又粗| 亚洲成人av在线电影| 亚洲天堂av中文字幕| 成人精品亚洲人成在线| 四季av一区二区| 亚洲毛片视频| 99热这里只有精品7| 香蕉久久精品日日躁夜夜躁| 成人在线免费观看视视频| www.综合网.com| 正在播放国产一区| 天堂中文在线资| 欧美日韩一级片网站| 国产精品视频免费播放| 自拍偷拍亚洲激情| 成都免费高清电影| 国产成人日日夜夜| 亚洲 激情 在线| 蜜乳av另类精品一区二区| 超碰10000| 外国成人激情视频| 91免费视频大全| 欧美国产禁国产网站cc| 91小视频网站| 国产九九精品| 欧妇女乱妇女乱视频| 久久香蕉国产| 日韩欧美在线一区二区| 欧美深夜视频| 成人91视频| 看亚洲a级一级毛片| 国产啪精品视频网站| 日本精品裸体写真集在线观看| 97精品久久久| 久久免费电影| 久久精品国产亚洲精品| bbbbbbbbbbb在线视频| 日韩国产高清视频在线| 囯产精品久久久久久| 日韩视频免费直播| 国产丝袜在线视频| 6080日韩午夜伦伦午夜伦| 怡春院在线视频| 在线亚洲一区观看| 国产成人a v| 在线免费观看日本欧美| 欧美一级淫片免费视频黄| 黄色一区二区在线观看| 日韩欧美性视频| 亚洲第一激情av| 日韩av男人天堂| 午夜不卡av免费| 精品国产乱码一区二区| 五月激情六月综合| 国产精品久久久久久久妇| 欧美日韩激情美女| 日本韩国欧美中文字幕| 欧美日韩在线免费观看| 国产三级精品三级在线观看| 色偷偷久久一区二区三区| www.久久久久久久| 欧美在线观看你懂的| 在线观看免费视频一区| 555夜色666亚洲国产免| www.成人精品| 精品福利二区三区| 亚洲人成色777777精品音频| 国产视频精品自拍| youjizz在线播放| 久久精品欧美视频| 日本性爱视频在线观看| 91国在线精品国内播放| 性欧美18~19sex高清播放| 欧美一级片免费在线| 99久久精品一区二区成人| 成人精品久久一区二区三区| 亚洲天堂av资源在线观看| 精品日本一区二区三区| 国产精品自拍区| www亚洲国产| 亚洲精选国产| 嫩草影院国产精品| 国产成人在线电影| 亚洲专区区免费| 国产精品对白交换视频| 欧美精品色哟哟| 一本久久综合亚洲鲁鲁五月天 | 欧美午夜免费电影| 国产精品九九九九| 精品久久久久久久久久久久包黑料| 韩国av电影在线观看| 亚洲欧洲成视频免费观看| 欧美69xxxx| 国内精品视频在线| 在线成人视屏| 国产日韩亚洲精品| 成人影院天天5g天天爽无毒影院| 黄网站色视频免费观看 | 亚洲乱码国产一区三区| 精品一区二区三区在线播放视频| 久久久久久久人妻无码中文字幕爆| 91看片淫黄大片一级| 国产在视频线精品视频| 午夜精品久久久久久久99水蜜桃| 99久久久无码国产精品免费蜜柚| 欧美精品在线一区二区三区| 天天操天天射天天| 久久激情视频久久| 芒果视频成人app| 96pao国产成视频永久免费| 激情小说亚洲图片| 亚洲自拍偷拍二区| 性欧美暴力猛交另类hd| 伊人五月天婷婷| 国产日韩在线不卡| 国产一级一片免费播放放a| 欧洲精品在线观看| 五月婷婷六月丁香| 欧美精品手机在线| 99久久精品一区二区成人| 精品视频免费观看| 在线国产一区二区| 午夜视频你懂的| 99视频有精品| 免费日韩在线视频| 欧美丰满嫩嫩电影| 国产一二三区在线视频| 欧美国产日韩一区| 麻豆国产精品| 亚洲国产精品久久久久久女王| 新67194成人永久网站| 好吊操视频这里只有精品| 国产精品成人免费| av手机天堂网| 日韩精品在线私人| av丝袜在线| 国产aⅴ精品一区二区三区黄| 97精品国产一区二区三区| 丝袜制服一区二区三区| 久久亚洲一区二区三区四区| 国产在线综合网| 日韩欧美中文一区| 在线中文字幕电影| 成人一区二区电影| 99久久99久久精品国产片果冰| 免费看a级黄色片| 久久久三级国产网站| av大全在线观看| 日韩经典中文字幕| 久草在线资源站手机版| 精品一区2区三区| 国产精品久久久免费| 亚洲精品在线视频免费观看| 亚洲成人免费在线观看| 欧美综合视频在线| 5278欧美一区二区三区| 秋霞影视一区二区三区| 无码人妻丰满熟妇区96| 91麻豆免费看| 丁香六月婷婷综合| 亚洲精品在线91| 国产成人精品一区二三区在线观看| 日韩av电影免费播放| 国产欧美日韩一区二区三区在线| 屁屁影院国产第一页| 狠狠躁夜夜躁人人爽天天天天97| 香蕉视频国产在线| 日韩av黄色在线观看| 欧美久久综合网| www.精品在线| 亚洲视频一区在线| 亚洲毛片在线播放| 欧美一区二区大胆人体摄影专业网站| 亚洲人成亚洲精品| 国产高清视频网站| 18成人在线观看| 亚洲高清精品视频| 欧美性受xxxx白人性爽| 欧美日韩激情在线一区二区三区| 亚洲 激情 在线| 亚洲激情校园春色| 深夜福利在线视频| 国产精品丝袜高跟| 欧美日韩精品| 素人fc2av清纯18岁| 欧洲一区在线观看| 18网站在线观看| 美脚丝袜一区二区三区在线观看| 久久综合网络一区二区| chinese全程对白| 精品国产一区二区在线观看| 中文字幕在线看片| 一区二区三区一级片| 成人久久久精品乱码一区二区三区| 久草视频一区二区| 久久伊人色综合| 欧美男人操女人视频| 人妻无码视频一区二区三区| 亚洲人成伊人成综合网小说| 天天色棕合合合合合合合| 国产精品精品久久久| 亚洲午夜伦理| 日韩女同一区二区三区| 精品免费日韩av| 99久久久国产精品免费调教网站 | 99精品在线直播| 久久五月激情|