Linq查詢操作之投影操作

2021-09-09 04:23:16 字數 2983 閱讀 5713

投影操作,乍一看不知道在說啥。那麼什麼是投影操作呢?其實就是select操作,名字起的怪怪的。和linq查詢表示式中的select操作是一樣的。它能夠選擇資料來源中的元素,並指定元素的表現形式。投影操作包括以下2種操作:

1、select操作,將資料來源中的元素投影到新的序列中,並指定元素的型別和表現形式。

2、selectmany操作,也可以將資料來源中的元素投影到新的序列中,並指定元素的型別和表現形式。但該操作可以將該函式應用到多個序列之上,並將結果合併成乙個序列。

下面我們逐一看一下這兩個操作。

select操作

select操作,將資料來源中的元素投影到新的序列中,並指定元素的型別和表現形式。和linq查詢表示式中的select操作相似。select操作將乙個函式應用到乙個序列上,並產生乙個新的序列。enumerable的select()原型如下:

public

static ienumerableselect(this ienumerablesource, funcselector);

其中source表示資料來源,selector表示對映元素的轉換函式。tsource指定引數型別,tresult指定selector函式的返回值型別。

下面我們建立乙個整型陣列ints,包含10個元素。使用select來計算每個元素除以5的餘數。

1

private

void

slectquery()

214 }

我們看看輸出結果:

selectmany操作

selectmany和select比較相似,主要區別是可以將乙個函式應用到多個序列上,並將結果合併成乙個新的序列。enumerable的selectmany()操作的原型如下:

public

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);

source表示資料來源,selector表示對映元素的轉換函式。collectionselector表示對映元素的轉換函式的集合。下面我們來做個具體例項來看一看.

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 ...