LINQ 與資料存取:ASP.NET篇(2)- 透過 LINQ 讀取 DataSet 資料

第一篇從 Web Forms 與 ADO.NET 開始的討論中,利用典型的ADO.NET功能,從KTMS資料庫取得資料,並且顯示在畫面上,而如果你需要將取回的資料進一步作處理,可以利用LINQ來達到需要的效果。

這一篇作最簡單的介紹,回到第一篇的範例,來看看其中的程式碼:

void GetProducts(int p)
{
SqlConnection conn = new SqlConnection(@"Server=Tim-PC;");
    string sql = "SELECT * FROM Products WHERE UnitPrice < " + p ;
    DataSet ds = new DataSet();
    using (conn)
    {
         SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);
         adapter.Fill(ds, "Products");
    }
 gridView.DataSource = ds.Tables[0];
    gridView.DataBind();
}

倒數第二行中,經由 ds.Tables[0] 取得其中的資料,現在調用 AsEnumerable() ,改寫如下:

EnumerableRowCollection<DataRow> table =
    from row in ds.Tables[0].AsEnumerable()
    select row;
gridView.DataSource = table.CopyToDataTable();

在 LINQ 敘述中,DataTable 資料轉換成為支援 LINQ 的列舉集合物件,然後取得結果 table 物件,最後再調用 CopyToDataTable() 將其進行轉換,重新繫結至 GridView 控制項。

這一篇比較簡單,其中資料的轉換在「LINQ 與資料存取 (2) - 透過 LINQ 讀取 DataSet 資料」這一篇已經作了示範,這裏主要展示 CopyToDataTable() 這個方法。

由於只是示範性質,因此還看不出來轉換成LINQ查詢的好處在那裏,下一篇針對這一部份作說明。


LINQ 與資料存取系列



沒有留言: