資料處理 LINQ & DataTable (1)

基本介紹

教學目標

在過去程式開發人員當透過 C# 查詢資料時,必須把 SQL (Structured Query Language) 語法寫進程式中,接著才能間接進行資料庫的查詢,然而透過 LINQ 則可以直接透過程式查詢資料。

重點概念

在銀行進行資料倉儲的工作已達半年,已經有些經驗在不涉及商業機密的情況下進行技術分享。

相關技術

LINQ 全名為 Language-Integrated Query 提供了一種較簡單且一致的模型,可處理各種資料來源和格式的資料,其查詢作業主要由三個動作構成:取得資料來源、建立查詢和執行查詢。

DataTable 物件主要是代表在記憶體中的關聯資料表,搭配 DataRow 物件和 DataColumn 物件即可處理 DataTable 中不同資料的實際內容,可以單獨建立及使用,也可以成為 DataSet 的成員,在 ADO.NET 中 DataSet 是以常駐記憶體表示的資料,不論內含資料來源為何,都可提供一致的關聯式程式設計模型。它表示一組完整的資料,包括內含、排序和約束資料的資料表,以及資料表間的關聯性。

整合應用

透過 LINQ 查詢實作 IEnumerable 泛型介面的資料來源。針對 DataTable 呼叫 AsEnumerable 就會傳回實作泛型 IEnumerable 介面的物件,而此物件會當成 LINQ 查詢的資料來源。

在查詢中可以指定想要從資料來源中擷取的資訊,當然查詢也可以指定該項資訊傳回之前應該如何排序和分群。在查詢會儲存在變數內,如果查詢設計成傳回值的序列,則查詢變數本身就必須是可列舉的型別。此時查詢變數不會採取任何動作,也不會傳回任何資料只會儲存查詢資訊。

在您建立查詢之後,必須執行該查詢以便擷取任何資料。在傳回值序列的查詢中,查詢變數本身絕不會儲存查詢結果,只會儲存查詢命令而已。查詢的執行會延後,直到在迴圈中反覆查看查詢變數為止,這就稱為「延後執行」,也就是查詢執行會在建構查詢之後的某個時間點進行不同頻率的查詢。例如,當您正由其他應用程式更新的資料庫時,透過重複執行此查詢,以便每次都傳回更新的資訊。最後更可以透過 CopyToDataTable 方法會將查詢的結果複製到 DataTable 中。

相關資源