標籤

more tags...

最新回覆

[ASP.NET]利用List的Sort()、Find()、FindAll()、Exist()來解決一些問題

最近寫案子常常用到List<T>,這個東西還真好用

因為它有下列東西:

List<T>.Sort() → 排序T

List<T>.Find() → 找出一個T

List<T>.FindAll() →找出多個T

List<T>.Exist() →判斷T是否存在

小弟就寫個範例介紹這些東西吧..

GenericList.aspx

GenericList.aspx.cs

執行結果:

參考網址:
http://blogs.msdn.com/kcwalina/archive/2004/06/22/162533.aspx
http://www.dotblogs.com.tw/chhuang/archive/2008/05/08/3908.aspx
 

推到 Twitter!
推到 Plurk!


 

2009/5/28 11:22| 閱讀數 : 6856 | 4 人收藏 2 人推薦 我要推薦 | 4 Comments | 文章分類 : ASP.NET ASP.NET(Collections) 訂閱


回覆

# re: [ASP.NET]利用List<T>的Sort()、Find()、FindAll()、Exist()來解決一些問題, Posted by WizardWu on 2009/5/28 下午 12:30  回覆


從 C# 3.0 開始,已有更簡潔的「Object Initializers」、「Collection Initializers」語法可用,
兩者搭配後,可如下,您即無須多次呼叫 List 或 ArrayList 類別的 Add() 方法,
compiler 會自行加入該個呼叫的動作:

List<Person> lstPerson = new List<Person>
{
  new Person { 1, "puma", 10 },
  new Person { 2, "F6 Team", 20 },
  new Person { 3, "ASP.NET", 30 }
};


等同下方舊式的寫法:


List<Person> lstPerson = new List<Person>();
lstPerson.Add(new Person { 1, "puma", 10 });
lstPerson.Add(new Person { 2, "F6 Team", 20 });
lstPerson.Add(new Person { 3, "ASP.NET", 30 });

------------------------------------------------------------------------

另 C# 3.0 也有「Auto-Implemented Properties (Automatic Properties)」,
若是 Class 中 Property 的 get/set accessor,無須特別的邏輯判斷時,
可用 Auto-Implemented Properties 簡化 Property 的宣告,
compiler 還會自動產生 Property 對應的 private field。

// C# 3.0
public int ID { get; set; }

// C# 2.0
private int _ID;
public int ID
{
  get { return _ID; }
  set { _ID = value; }
}

------------------------------------------------------------------------

不過公司的開發團隊、後續維護人力、外包人力(有可能包到對岸)、公司新進人員,都得跟著做技術升級才行,
除非都是做一人專案,愛怎麼玩新技術都行,
否則還是應該多顧慮別人和合作伙伴,如您本文這樣以傳統寫法會較穩當,
小弟我自己在公司開發元件和公司自己的 Framework,也都只敢用 C# 2.0 和之前的傳統語法。

# re: [ASP.NET]利用List<T>的Sort()、Find()、FindAll()、Exist()來解決一些問題, Posted by puma on 2009/5/29 上午 09:31  回覆

to WizardWu,

感謝大大提供c#3.0的寫法..

最後你也說的沒錯,我們公司的code的確是有台灣和大陸人的維護的

而且公司也還停在2.0時代,呵呵..

很多的限制,以致於還都是用傳統語法..

最後還是感謝你提供的寫法..可以讓網路上的朋友了解

C#3.0 的新東西..

# re: [ASP.NET]利用List<T>的Sort()、Find()、FindAll()、Exist()來解決一些問題, Posted by 我是小雞 on 2009/6/1 上午 11:52  回覆

真是好文章,我也學到不少東西,

WizardWu大大也寫的很好。

# re: [ASP.NET]利用List<T>的Sort()、Find()、FindAll()、Exist()來解決一些問題, Posted by dan0605 on 2009/12/4 下午 03:01  回覆

你好,打擾了,謝謝你的分享,但有一個小疑問請教一下!
關於lstPerson.Sort(delegate(Person p1, Person p2) { return Comparer<string>.Default.Compare(p1.Name, p2.Name); });

sort應該是List類別的method,
我想問,method傳入的comparer參數,是person類別本身的compare嗎?因看了你的CODE 在person中並沒有實作,再查了一下MSDN中,不太清楚.實際傳入的comparer是呼叫了誰的compare的method.
http://msdn.microsoft.com/zh-tw/library/6sh2ey19(VS.80).aspx

發表回覆

標題: *
姓名: *
Email: (將不會被顯示)
Url:
回覆: *
登入後使用進階評論
Please add 1 and 4 and type the answer here:
F6 Team logo


用BloggerAds 替自已加薪

每月文章

文章分類

推薦討論區

推薦部落格