LINQ to DataSet 初探

DataSet在ADO.NET中,是一個非常重要的物件,它用來快取各種資料來源的內容資料,同時沒有任何與底層資料庫的連線,因此,提供資料操作的最佳彈性,允許應用程式從各種不同的資料來源取得資料內容,並且進一步針對這些資料執行各種維護操作。

「LINQ to DataSet」針對 DataSet 作了進一步的擴充,「LINQ 實務精要」圖書中這一章的文章針對此部份進行討論,將在此逐篇釋出。

DataSet幾乎是整個ADO.NET客戶端資料處理功能的核心,當資料被快取至DataSet物件,剩下的工作則交由DataSet物件來執行,應用程式能夠直接在記憶體處理資料內容,而不需要與後端資料庫進行連接。

現在,我們可以透過 LINQ 的支援,針對 DataSet 物件資料執行進一步的查詢運算。

考慮以下的程式碼:

SqlConnection conn =new SqlConnection(connstring);
string sql = "SELECT * FROM Book";
DataSet ds = new DataSet();
using (conn)
{
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
adapter.Fill(ds, "Book");
}
DataTable dt = ds.Tables["Book"];

IEnumerable<DataRow> rows =
from row in dt.AsEnumerable()
select row ;

foreach (DataRow row in rows)
{
// row[0]
// row[1]
}

其中灰階標示的部份,透過  AsEnumerable 將 DataTable 轉換成支援 LINQ 查詢的集合物件,然後執行 LINQ 敘述,最後的迴圈將其中的欄位資料逐一取出。

沒有留言: