【公告】網站目前停止所有的課程訂閱服務,原有學員權益不受影響,造成不便還請見諒,我們正在打造更多課程以及圖書,包含 Python 為主的課程主題,未來將會合併且擴充目前的課程內容,提供全新課程訂閱服務,感謝學員的支持。
【公告】《Entity Framework 實務精要》 絕版優惠學習活動,是針對最後一批少量書籍絕版的短期特別活動,只提供 20 個名額(剩 7 名),教學影片要在今年暑假過後才會重新開放訂閱,並沒有提供之前單獨購書的讀者,還請見諒, 如果您需要教學影片,屆時再請參與,也感謝讀者學員的支持,我們正在開發更多的教學內容,歡迎與我們一起努力。
《Entity Framework 實務精要》 絕版優惠學習活動》

LINQ 與資料存取:ASP.NET篇(4)- 以 LINQ to SQL 萃取資料

除了 SQL 敘述之外,透過 DataSet 直接萃取資料,還必須進一步自行處理資料類別的細節,我們可以利用 LINQ to SQL 來達到需要的效果,同「LINQ 與資料存取 (4) - 透過 LINQ to SQL 進行資料表查詢」討論的內容,這一個小特來看看相關的作法,參考其中對 LINQ to SQL的設定,現在另外建立一個新的網頁,配置需要的程式碼以從資料庫萃取資料於網頁呈現。

需要的 LINQ to SQL 對應類別如下:

[Table(Name = "Products")]
public class Product
{
        public Product()
        {
        }
        public Product(int pid, string name, int price, int cid)
        {
            this.productID = pid;
                this.productName = name;
                this.unitPrice = price;
                this.categoryID = cid;
        }
         [Column]
        public int productID { get; set; }
         [Column]
        public string productName { get; set; }
         [Column]
        public int unitPrice { get; set; }
         [Column]
        public int categoryID { get; set; }
}

接下來以指定的連線字串,建立 Context 物件,取出 Products 資料表的內容,最後將資料繫結至 GridView 控制項,展示資料內容。

SqlConnection conn = new SqlConnection(
     @"Server=Tim-PC;DataBase = KTMS ;Trusted_Connection=True ; ");
DataContext dc = new DataContext(conn);
Table<Product> table = dc.GetTable<Product>();

gridView.DataSource = table;
gridView.DataBind();

變數 table 封裝了資料表內容資料,緊接著透過不同的 LINQ 敘述,取出需要的局部資料,繫結至另外兩個 GridView 控制項。

var rows_books =
                from row in table
                where row.categoryID.ToString() == "101068"
                select row;
gridView_books.DataSource = rows_books;
gridView_books.DataBind();

var rows_html5 =
                from row in table
                where row.productName.ToString().Contains("HTML5")
                select row;
gridView_html5.DataSource = rows_html5;
gridView_html5.DataBind();

這個範例的邏輯以及所要達到的結果,與「LINQ 與資料存取:ASP.NET篇(3)- Why LINQ」這一篇所討論的完全相同,因此讀者只需瞭解其中一開始建立 Context 物件的關鍵差異即可。



LINQ 與資料存取系列

沒有留言: