LINQ To Objects 的資料來源
文 / 黃忠成
在LINQ To Objects的架構中,只要實作了IEnumerable<T>介面的物件,皆可做為LINQ To Objects的資料來源,那具體有那些呢?見下表。
型別
|
說明
|
IEnumerable<T> 系列
|
1、具型陣列,如string[]、int[]、DateTime[]等等。
2、實作了IEnumerable<T> 之物件,如List、Dictionary、Collection。
.NET Framework 3.5 資料庫開發聖典一書中,第三章主要使用此類來演示。
|
IEnumerable介面
|
1、實作了IEnumerable介面的物件,雖然廣義上而言,也能做為LINQ To Objects的資料來源,但需透過Cast、OfType函式轉換為IEnumerable<T>的過程,
見
DataReader、ArrayList等類物件均可循此途徑來與LINQ To Objects結合。
.NET Framework 3.5 資料庫開發聖典一書中,這種應用不多,隱藏在Cast、OfType一節。
|
IQueryable<T>介面
|
就層次上而言,IQueryable介面也屬於LINQ To Objects所支援的資料來源,因為其是IEnumerable<T>的子代介面,當編譯器發現資料來源為實作IQueryable<T>介面之物件時,會採取Expression Tree方式來處理LINQ 查詢式。
這是為了將LINQ查詢式轉譯成一個個Expression Node,交由特定機制,將Expression Node轉譯為其它特定系統所能接受的指令。
例如:
1、LINQ To SQL、LINQ To Entities 將Expression Node轉為
SQL 指令。
2、LINQ To Active Directory將Expression Node轉為Active Directory API的操作。
3、LINQ To Excel 將Expression Node 轉為Excel COM 呼叫。
.NET Framework 3.5 資料庫開發聖典一書中,第三章末尾,對這種應用及實作有相當多的著墨。
|