close

一般來說,只要物件是繼承自IEnumerable,都能支援LINQ查詢。除了LINQ to SQL這類非.NET資料來源,一般來說LINQ的查詢都是採線性搜尋,如果想套上自己的搜尋方法,就得先了解如何擴充LINQ功能。

本篇文章只會簡單介紹實作Where函式所要用到的觀念,剩下的就靠各位自己啦。

首先定義資料的裝載型式。

2011-03-27_160520

LinqClassItem只有Id這個資料,然後就是覆寫ToString方法,非常的簡單。

 

接下來定義容器的形式,這個容器繼承自Ienumerable且只能裝載LinqClassItem。

2011-03-27_160725

從上面的程式碼可以看到,Where函式的參數就是你比對資料的”條件”,這個”條件”回傳值是bool,而它的參數則是LinqClassItem,而整個Where函式,它不是將List裡的資料逐一拿出來比對,而是先取偶數Index的資料來比對,然後再取基數的Index,有符合條件的就跳出整個函式。

 

接下來測試所寫好的類別。

2011-03-27_160801

程式碼中可以看到有二個物件的ID是重覆的,這是為了測試資料有重覆時,取出來的資料是不是也會重覆。

 

執行結果。

2011-03-27_160849

 

以上就是簡單的介紹,原本筆者打算將以前大學所學到的資料結構搜尋法套用進去,但我發現bool值是二元,如果要將像是二分搜尋法給套進去,那回傳值要是三元的,所以等研究出來再跟各位分享。

arrow
arrow
    全站熱搜

    卑微研究生 發表在 痞客邦 留言(0) 人氣()