精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲一区亚洲二区亚洲三区| 亚洲免费影视第一页| 99久热在线精品视频| www.色日本| 一区二区三区四区五区在线| 中文字幕亚洲欧美日韩2019| 性生活在线视频| 女人让男人操自己视频在线观看| 日韩精品电影在线| 久久久国产精彩视频美女艺术照福利 | 丁香激情综合五月| 91精品国产乱码久久久久久久久| 国产又黄又嫩又滑又白| 小视频免费在线观看| 国产精品久久久久久久蜜臀| 成人自拍爱视频| 亚洲精品国产精品国自产网站按摩| 亚洲区小说区图片区qvod按摩| 亚洲成人tv网| 亚洲国产一区二区三区在线播| 久久国产乱子伦精品| 欧美在线观看天堂一区二区三区| 日韩午夜在线观看| 丁香婷婷激情网| av手机免费在线观看| 成人免费在线播放视频| 欧美高清视频一区二区三区在线观看| 天天插天天操天天干| 欧美岛国激情| 亚洲一区av在线播放| av av在线| 日本在线一区二区三区| 欧美日韩一区视频| 91免费视频网站在线观看| 最新日本在线观看| 国产精品护士白丝一区av| 免费一区二区三区| 人妻视频一区二区三区| 国产自产高清不卡| 国产精品三级网站| caoporn国产| 国产欧美二区| 91福利视频在线观看| 免费在线观看av网址| 亚洲精品网址| 日日狠狠久久偷偷四色综合免费 | 多野结衣av一区| 亚洲美女免费在线| 精品一区二区三区自拍图片区| 国产精品777777| 伊人天天综合| 久久久久免费精品国产| 色欲av无码一区二区三区| 岛国精品一区| 亚洲韩国日本中文字幕| 中文字幕在线导航| 午夜激情成人网| 日本黄色一区二区| 黄色片在线免费| 日本国产一区| 欧美一区2区视频在线观看| 亚洲精品在线视频播放| 北岛玲精品视频在线观看| 欧美优质美女网站| 高清欧美精品xxxxx| 免费网站在线观看人| 亚洲一卡二卡三卡四卡无卡久久| 日韩av在线一区二区三区| 国产永久免费高清在线观看| 国产亚洲欧美色| 亚洲电影一二三区| 免费黄网站在线播放| 亚洲精品国产精华液| 成人精品视频在线播放| 91se在线| 91在线视频18| 日韩成人av电影在线| 日本三级在线播放完整版| 18成人在线视频| 国产手机免费视频| 偷拍精品精品一区二区三区| 欧美日韩一区二区三区四区五区| 国产一区二区网| 日本色护士高潮视频在线观看 | 国产白丝一区二区三区| 亚洲成在人线免费观看| 亚洲日本中文字幕| 在线观看国产网站| 欧美老女人另类| 久久福利网址导航| 一区二区三区视频免费看| 国产一区激情| 日韩免费黄色av| a在线观看视频| 久久久三级国产网站| 中文字幕制服丝袜在线| 毛片大全在线观看| 在线观看一区二区视频| 男人添女人荫蒂国产| 国产免费av一区二区三区| 久久久成人精品| 日韩精品一区二区亚洲av| 激情欧美一区二区| 久久综合九九| 伊人精品影院| 欧美丝袜自拍制服另类| 亚洲一级Av无码毛片久久精品| 香蕉大人久久国产成人av| 亚洲欧美日韩一区二区在线| 免费中文字幕在线| 日本亚洲一区二区| 国产一区二区三区无遮挡| 最近高清中文在线字幕在线观看| 国产精品高潮久久久久无| 男人添女人下部高潮视频在观看| 麻豆国产在线| 日韩视频一区在线观看| 国产91丝袜美女在线播放| 尤物在线精品| 亚洲最大的免费| av成人手机在线| 日韩欧美国产高清91| 99riav国产精品视频| 日韩专区精品| 国产不卡精品视男人的天堂| 欧美一级免费片| 亚洲女同一区二区| 国产精品区在线| 国产精品亚洲欧美一级在线| 亚洲性xxxx| 黑人精品无码一区二区三区AV| 久久国产主播| 精品999在线观看| 成年人在线视频| 欧美日韩一区二区免费在线观看| 亚洲国产精品三区| 竹菊久久久久久久| 4438全国亚洲精品在线观看视频| 亚洲图片欧美在线| 欧美激情一区不卡| 日韩精品一区二区三区色欲av| 亚瑟国产精品| 色偷偷噜噜噜亚洲男人| 日韩av在线播放观看| 粉嫩一区二区三区在线看| 99精品视频网站| 国产精品国产亚洲精品| 久久深夜福利免费观看| 99热国产在线观看| 9色porny自拍视频一区二区| 一个色的综合| 日本一区二区三区中文字幕| 色青青草原桃花久久综合| 亚洲图片视频小说| 亚洲欧美自拍偷拍| 中文字幕第一页在线视频| 99热精品久久| 亚洲一区免费网站| 国产盗摄一区二区| 欧美人牲a欧美精品| 国产又粗又长又硬| 国产一区二区女| 久久久久久www| 亚州综合一区| 国产精品男人的天堂| 秋霞午夜在线观看| 色哟哟亚洲精品| 极品蜜桃臀肥臀-x88av| 久国产精品韩国三级视频| 福利网在线观看| 国产精品一线| 日本欧美精品在线| 男人天堂一区二区| 日韩欧美亚洲综合| 2017亚洲天堂| 国产精品18久久久久久久久久久久 | 亚洲不卡中文字幕无码| 欧美人与拘性视交免费看| 欧美精品激情在线观看| 日本aaa在线观看| 欧美日韩黄色一区二区| 免费在线一区二区三区| 91视视频在线观看入口直接观看www | 国产精品久久av| 国产一二区在线| 亚洲精品av在线播放| 正在播放木下凛凛xv99| 亚洲黄一区二区三区| 国产ts丝袜人妖系列视频| 毛片基地黄久久久久久天堂| 激情六月天婷婷| 日韩一二三区在线观看| 欧美亚洲在线视频| 国产美女av在线| 国产丝袜视频一区| 中文字幕精品无码一区二区| 国产精品国产三级国产a| 中文字幕 日韩 欧美| 在线精品福利| 亚洲高清在线播放| 成人在线观看免费视频| 中文字幕精品国产| 欧美一级特黄aaaaaa| 亚洲第一成人在线| 林心如三级全黄裸体| 波多野结衣亚洲一区| 自拍偷拍一区二区三区四区| 国产人成精品一区二区三| 免费国产成人看片在线| 国产精品一区二区99| 成人毛片网站| 国产精品白丝久久av网站| 美女av一区二区三区| 精品999视频| 精品福利一区二区三区免费视频| 日韩伦人妻无码| 亚洲欧美日韩成人高清在线一区| 黄页网站在线看| 日韩人妻无码精品久久久不卡| 任你弄精品视频免费观看| 亚洲aⅴ日韩av电影在线观看| 日本在线视频中文有码| 日韩中文视频免费在线观看| 韩国三级在线观看久| 欧美影院一区二区| www.国产一区二区| 精品久久久久久中文字幕| 久久综合成人网| 亚洲丝袜制服诱惑| 亚洲一二三四视频| 国产日韩精品一区| 在线观看福利片| 99国产精品久| 中文字幕免费在线播放| 丰满少妇久久久久久久| 又大又长粗又爽又黄少妇视频| av不卡在线| 国产va亚洲va在线va| 午夜国产精品视频| 看一级黄色录像| 综合一区二区三区| 日本特级黄色大片| 91精品一区二区三区综合| 精品视频在线观看| 欧洲亚洲视频| 欧美久久久久久久| 中文字幕av一区二区三区人| 久久久久久亚洲精品不卡4k岛国| 久久青草免费| 国产精品爽爽ⅴa在线观看| 91九色综合| 国产视频观看一区| 精品成人18| 国产女人水真多18毛片18精品 | 99精品免费网| 成年网站在线免费观看| 老牛嫩草一区二区三区日本| 熟妇人妻va精品中文字幕| 天堂一区二区在线| 性生活免费在线观看| 中文久久精品| 欧美日韩在线中文| 欧美日韩国产在线一区| 国产成人一区二区三区别| 日韩片欧美片| 日韩视频在线观看视频| 欧美午夜视频| 国产97在线 | 亚洲| 久久精品盗摄| 国产精品国产对白熟妇| 麻豆亚洲精品| 欧美一级xxxx| 成人av免费在线| 免费一级黄色录像| 亚洲柠檬福利资源导航| 国产一级生活片| 色综合亚洲欧洲| 91久久精品国产91性色69| 欧美xxxxxxxxx| 日本高清中文字幕二区在线| 中文字幕亚洲一区| lutube成人福利在线观看| 精品国内产的精品视频在线观看| 国产女人在线观看| 久久五月天色综合| 中老年在线免费视频| 国产欧亚日韩视频| 黄色美女久久久| 亚洲第一导航| 91久久中文| 在线看的黄色网址| av在线免费不卡| fc2ppv在线播放| 精品国产999| 国产欧美熟妇另类久久久 | 久久久777精品电影网影网| 精品一区二区在线观看视频| 亚洲大片精品永久免费| 成人黄色片在线观看| 精品国产乱码久久久久久图片 | 草视频在线观看| 亚洲永久免费视频| 国产美女www| 欧美日韩亚洲综合在线| 人妻与黑人一区二区三区| 最近2019年中文视频免费在线观看| 午夜视频成人| 欧美亚洲成人网| 香蕉大人久久国产成人av| 日韩在线观看电影完整版高清免费| 欧美日一区二区| 欧美亚洲精品一区二区| 韩国女主播成人在线| 中文字幕 自拍| 国产精品久久久久久久久动漫| www.av免费| 欧洲国产伦久久久久久久| 天天躁日日躁狠狠躁伊人| 久热精品视频在线| 78精品国产综合久久香蕉| 久久久国产精品一区二区三区| 久久99高清| 99亚洲精品视频| 蜜臀久久久99精品久久久久久| 在线播放黄色av| 中文字幕免费不卡| 天天操天天干天天摸| 亚洲国产精品成人精品| 福利在线播放| 国产v综合ⅴ日韩v欧美大片| 丝袜av一区| 国产白丝袜美女久久久久| 成人国产亚洲欧美成人综合网| 泷泽萝拉在线播放| 精品久久久久久久久久国产| 黄色成人一级片| 欧美黑人性生活视频| 1769国产精品视频| 91大学生片黄在线观看| 国产在线不卡一卡二卡三卡四卡| 午夜男人的天堂| 亚洲一区二区av在线| 一区二区三区麻豆| 国产亚洲精品一区二区| 色婷婷av在线| 国产精品对白刺激久久久| 欧美另类综合| 国产伦精品一区二区三区精品| 国产欧美日本一区视频| 久青草视频在线观看| 日韩欧美成人激情| 欧美xxxx性xxxxx高清| 国产精品久久久久久免费观看| 欧洲grand老妇人| 欧美视频免费看欧美视频| 久久精品久久久精品美女| 亚洲精品天堂网| 欧美精品乱码久久久久久按摩| 亚洲日本香蕉视频| 日本成人精品在线| 精品国产一区二区三区小蝌蚪| 国产中文字幕二区| 久久蜜桃一区二区| 国产午夜久久久| 日韩精品视频免费| 久久xxx视频| 黄色网络在线观看| 成人免费观看av| 亚洲乱码国产乱码精品| 中文字幕在线看视频国产欧美| 亚洲第一影院| 亚洲资源在线网| 国产成人激情av| 亚洲黄色免费观看| 久久韩剧网电视剧| 欧美成人午夜77777| 久久久精品麻豆| 一二三四社区欧美黄| 五月婷婷六月激情| 国产欧美日韩免费| 91久久中文| 91麻豆精品久久毛片一级| 日韩精品一区二区在线观看| 中文一区一区三区高中清不卡免费| 国产在线一区二| 免费观看日韩av| 国产成人精品亚洲男人的天堂| 欧美一区二区三区四区高清| 无遮挡的视频在线观看| 粉嫩av一区二区三区免费观看| 亚洲综合色网| 疯狂揉花蒂控制高潮h| 欧美日韩高清一区二区三区| 超碰中文在线| 亚洲电影一二三区| av不卡在线播放| 国产男男gay体育生网站| 5566成人精品视频免费| 亚洲精品在线观看91| 白白色免费视频|