Select的應用 | LINQ select 用法
前面累積了這麼多的觀念,現在終於要用上了,我們要來正式介紹第一個LINQ語法Select了。格式說明在應用的單元裡文章會被分為幾個小節:功能說明:語法的功用方法定義:語法的方法定義查詢運算式:此語法的運算是使用方法方法範例:使用各個方法實作例子特別之處:語法的特性說明因應不同的語法章節內容會有微調。功能說明Select運算子可以將集合中的每一個元素以新的形式輸出,其用法與SQL的Select相似。方法定義Select有兩個Public的方法如下:Select只有一個傳入參數Selector,這個參數是一個委派[1]參數,而傳入的方法其實就是你想要對每...
前面累積了這麼多的觀念,現在終於要用上了,我們要來正式介紹第一個LINQ語法Select了。
格式說明在應用的單元裡文章會被分為幾個小節:
功能說明: 語法的功用 方法定義: 語法的方法定義 查詢運算式: 此語法的運算是使用方法 方法範例: 使用各個方法實作例子 特別之處: 語法的特性說明因應不同的語法章節內容會有微調。
功能說明Select運算子可以將集合中的每一個元素以新的形式輸出,其用法與SQL的Select相似。
方法定義Select有兩個Public的方法如下:
Select只有一個傳入參數Selector,這個參數是一個委派[1]參數,而傳入的方法其實就是你想要對每一個元素什麼樣的事情。
兩種方法的差別在於第二個委派參數Selector,兩個委派方法差了一個int傳入參數,這個int其實就是集合的index,工程師可以利用這個傳入參數取得目前元素在集合中的位置。
查詢運算式依照C# Spec[2]上的語法定義如下:
expression: 在每個元素上你要取得的資料物件看定義很難懂對不對? 我們先來看個例子吧:
第一行的from是將產品(Products)這個集合上的每一個元素以x來表示 第二行的select代表說要將每一個元素(x)的產品名稱(ProductName)輸出當有多個資料想要藉由select輸出時,也可以用Anonymous types和Object Initializer來達到此目的:
看到這裡我們知道expression其實就是一個變數或是一個類別,而這個變數(或類別)就是你期望在每個元素上取得的資料。
例子看過前一章[3]的介紹可以知道,其實查詢運算式會轉換成標準查詢運算子,現在我們就用上節的查詢運算式例子轉換成標準查詢運算子看看:
在這個例子的比對中我們可以發現:
Query的from的目的就是要確定資料來源及其在Lambda運算式中的別名 Query的Select後面接的其實就是Lambda expression上面的例子沒有使用到index這個參數,現在我們來看個有index的例子:
我們可以看到這個inde...