摘要:[VB / C#] List 排序(sort)的作法 from 微軟msdn網站
一直以來,排序對我來說都滿頭痛的
如果程式裡面沒有適當的函數協助我
我就會想到資料結構、或是演算法(以前學校學的,都有這些範例)
前兩天遇見一個情況
對方傳來一段 "字串",裡面會出現時間(例如 14 00或 09 00)
我必須用這些資訊來排序
幸好微軟 msdn這個寶庫就有範例可以協助
詳見: VB語法 http://msdn.microsoft.com/zh-tw/library/w56d4y5z(v=vs.110).aspx
範例有一個 Class名為 Part
您可以在網站或專案的 /App_code目錄底下,新增一個「類別(CLASS)」檔案
把這一段COPY進去即可
using System; using System.Collections.Generic; // List會用到這個命名空間,別忘了加上! // Simple business object. A PartId is used to identify the type of part // but the part name can change. public class Part : IEquatable<Part> , IComparable<Part> { public string PartName { get; set; } // 公開屬性 public int PartId { get; set; } // 公開屬性 public override string ToString() { return "ID: " + PartId + " Name: " + PartName; } public override bool Equals(object obj) { if (obj == null) return false; Part objAsPart = obj as Part; if (objAsPart == null) return false; else return Equals(objAsPart); } public int SortByNameAscending(string name1, string name2) { return name1.CompareTo(name2); } // Default comparer for Part type. public int CompareTo(Part comparePart) { // A null value means that this object is greater. if (comparePart == null) return 1; else return this.PartId.CompareTo(comparePart.PartId); } public override int GetHashCode() { return PartId; } public bool Equals(Part other) { if (other == null) return false; return (this.PartId.Equals(other.PartId)); } // Should also override == and != operators. }
其餘程式,可以放在ASP.NET的 Page_Load事件內執行
會動以後,就能改了。
講完了,好簡單。
using System.Collections.Generic; // List會用到這個命名空間,別忘了加上!
// Create a list of parts. Part是您自己定義的資料型態,就是前面的那個類別檔。 List<Part> parts = new List<Part>(); // Add parts to the list. 先把您需要的資料,加入List,就能進行排序囉。 parts.Add(new Part() { PartName = "regular seat", PartId = 1434 }); parts.Add(new Part() { PartName= "crank arm", PartId = 1234 }); parts.Add(new Part() { PartName = "shift lever", PartId = 1634 }); ; // Name intentionally left null. parts.Add(new Part() { PartId = 1334 }); parts.Add(new Part() { PartName = "banana seat", PartId = 1444 }); parts.Add(new Part() { PartName = "cassette", PartId = 1534 }); // Write out the parts in the list. This will call the overridden // ToString method in the Part class. Console.WriteLine("\nBefore sort:"); foreach (Part aPart in parts) { Console.WriteLine(aPart); // ASP.NET請改成 Response.Write() } // Call Sort on the list. This will use the // default comparer, which is the Compare method // implemented on Part. parts.Sort(); Console.WriteLine("\nAfter sort by part number:"); foreach (Part aPart in parts) { Console.WriteLine(aPart); // ASP.NET請改成 Response.Write() } // This shows calling the Sort(Comparison(T) overload using // an anonymous method for the Comparison delegate. // This method treats null as the lesser of two values. parts.Sort(delegate(Part x, Part y) { if (x.PartName == null && y.PartName == null) return 0; else if (x.PartName == null) return -1; else if (y.PartName == null) return 1; else return x.PartName.CompareTo(y.PartName); }); Console.WriteLine("\nAfter sort by name:"); foreach (Part aPart in parts) { Console.WriteLine(aPart); // ASP.NET請改成 Response.Write() } /* Before sort: ID: 1434 Name: regular seat ID: 1234 Name: crank arm ID: 1634 Name: shift lever ID: 1334 Name: chain ring ID: 1444 Name: banana seat ID: 1534 Name: cassette After sort by part number: ID: 1234 Name: crank arm ID: 1334 Name: chain ring ID: 1434 Name: regular seat ID: 1444 Name: banana seat ID: 1534 Name: cassette ID: 1634 Name: shift lever */
微軟 msdn網站真是太棒了
願意找、願意(動手)試試看
就會有很多範例可以讓我們用
機會,是給願意嘗試的人!
我將思想傳授他人, 他人之所得,亦無損於我之所有;
猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson
線上課程教學,遠距教學 (Web Form 約 51hr) https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015
線上課程教學,遠距教學 (ASP.NET MVC 約 140hr) https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab
寫信給我,不要私訊 -- mis2000lab (at) yahoo.com.tw 或 school (at) mis2000lab.net
(1) 第一天 ASP.NET MVC5 完整影片(5.5小時 / .NET 4.x版)免費試聽。影片 https://youtu.be/9spaHik87-A
(2) 第一天 ASP.NET Core MVC 完整影片(3小時 / .NET Core 6.0~8.0)免費試聽。影片 https://youtu.be/TSmwpT-Bx4I
[學員感言] mis2000lab課程評價 - ASP.NET MVC , WebForm 。 https://mis2000lab.medium.com/%E5%AD%B8%E5%93%A1%E6%84%9F%E8%A8%80-mis2000lab%E8%AA%B2%E7%A8%8B%E8%A9%95%E5%83%B9-asp-net-mvc-webform-77903ce9680b
ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。
......... facebook社團 https://www.facebook.com/mis2000lab ......................
......... YouTube (ASP.NET) 線上教學影片 https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/
Blog文章 "附的範例" 無法下載,請看 https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download
請看我們的「售後服務」範圍(嚴格認定)。
......................................................................................................................................................
ASP.NET MVC => .NET Core MVC 線上教學 ...... 第一天課程 完整內容 "免費"讓您評估 / 試聽
[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講 事先錄好的影片,並非上課側錄! 觀看時,有如「一對一」面對面講課。