投影操作,乍一看不知道在說啥。那麼什麼是投影操作呢?其實就是select操作,名字起的怪怪的。和linq查詢表示式中的select操作是一樣的。它能夠選擇資料來源中的元素,並指定元素的表現形式。投影操作包括以下2種操作:
1、select操作,將資料來源中的元素投影到新的序列中,並指定元素的型別和表現形式。
2、selectmany操作,也可以將資料來源中的元素投影到新的序列中,並指定元素的型別和表現形式。但該操作可以將該函式應用到多個序列之上,並將結果合併成乙個序列。
下面我們逐一看一下這兩個操作。
select操作
select操作,將資料來源中的元素投影到新的序列中,並指定元素的型別和表現形式。和linq查詢表示式中的select操作相似。select操作將乙個函式應用到乙個序列上,並產生乙個新的序列。enumerable的select()原型如下:
public其中source表示資料來源,selector表示對映元素的轉換函式。tsource指定引數型別,tresult指定selector函式的返回值型別。static ienumerableselect(this ienumerablesource, funcselector);
下面我們建立乙個整型陣列ints,包含10個元素。使用select來計算每個元素除以5的餘數。
1我們看看輸出結果:private
void
slectquery()
214 }
selectmany操作
selectmany和select比較相似,主要區別是可以將乙個函式應用到多個序列上,並將結果合併成乙個新的序列。enumerable的selectmany()操作的原型如下:
publicsource表示資料來源,selector表示對映元素的轉換函式。collectionselector表示對映元素的轉換函式的集合。下面我們來做個具體例項來看一看.static ienumerableselectmany(this ienumerablesource, func>selector);
public
static ienumerableselectmany(this ienumerablesource, funcint, ienumerable>selector);
public
static ienumerableselectmany(this ienumerablesource, funcint, ienumerable> collectionselector, funcresultselector);
public
static ienumerableselectmany(this ienumerablesource, func> collectionselector, funcresultselector);
1.建立兩個整型陣列inta,intb。他們的值分別是,,
2、建立乙個list的序列,並將inta和intb陣列新增到該序列中。
3、使用selectmany操作list序列
我們先用select操作:
1看下結果:private
void
slectmanyquery()2;
4int intsb = new
int ;
56 ilist lst = new list();78
lst.add(intsa);910
lst.add(intsb);
1112
//查詢資料
13var result = lst.select(x=>x);
1415
16foreach (var item in
result)
1720 }
我們現在用selectmany操作:
1看看操作結果:private
void
slectmanyquery()2;
4int intsb = new
int ;
56 ilist lst = new list();78
lst.add(intsa);910
lst.add(intsb);
1112
//查詢資料
13var result = lst.selectmany(x=>x);
1415
16foreach (var item in
result)
1720 }
我們看到select操作只是對list物件進行操作,而selectmany是對list中的每一項操作最後合併成乙個新的結果集。
我們可以通過原始碼開對比:
select操作最終呼叫的迭代器:
我們可以看出它只對資料來源進行一次foreach迭代。
selectmany操作:
selectmany操作,可以看出首先進行foreach迭代,在迭代裡面再對資料集的每一項進行乙個foreach迭代。所以selectmany能夠對多個序列進行操作後合併結果。
Linq查詢操作之投影操作
投影操作,乍一看不知道在說啥。那麼什麼是投影操作呢?其實就是select操作,名字起的怪怪的。和linq查詢表示式中的select操作是一樣的。它能夠選擇資料來源中的元素,並指定元素的表現形式。投影操作包括以下2種操作 1 select操作,將資料來源中的元素投影到新的序列中,並指定元素的型別和表現...
LINQ查詢操作 投影
我們一般說的 linq 是指 linq 表示式,詳見 linq 步步學 但除了表示式以外,linq 查詢操作更方便,凡是實現了介面 ienumerable或 iqueryable的,都可以用 linq 查詢操作。select int arr var items arr.select i i fore...
LINQ 之 基本 LINQ 查詢操作
在 linq 查詢中,第一步是指定資料來源。像在大多數程式語言中一樣,必須先宣告變數,才能使用它。在 linq 查詢中,最先使用from子句的目的是引入資料來源和範圍變數。queryallcustomers 是 ienumerable型別 資料來源 customers 和範圍變數 cust var ...