LINQ標準查詢運算子執行方式 非流式處理

2022-06-25 11:00:18 字數 1999 閱讀 7803

linq的延遲執行方式分兩種,一種是流式,另一種是非流式。非流式處理運算子必須先讀取所有源資料,然後才能生成結果元素。

非流式處理的運算子包括:groupby、orderby、orderbydescending、reverse、thenby、thenbydescending

groupby

listpetslist =

new list,

new pet ,

new pet ,

new pet };

//public static ienumerablegroupby(this ienumerablesource,

//funckeyselector, funcelementselector, func, tresult> resultselector);

var query = petslist.groupby(pet => math.floor(pet.age),pet=>pet.age,(key,ages)=>new

);

foreach (var result in

query)

view code

orderby,公升序

pet pets = ,

new pet ,

new pet };

//public static iorderedenumerableorderby(this ienumerablesource,

//funckeyselector);

ienumerablequery = pets.orderby(pet =>pet.age);

foreach (pet pet in

query)

- ", pet.name, pet.age);

}

view code

orderbydescending,降序

list decimals =

new list ;

ienumerable

query =decimals.orderbydescending(num=>num);

foreach (decimal num in

query)

view code

reverse,反轉序列中元素的順序

a', '

p', '

p', '

l', 'e'

};foreach (char chr in

reversed)

console.writeline();

view code

thenby 按公升序對序列中的元素執行後續排序

string fruits = ;

//public static iorderedenumerablethenby(this iorderedenumerablesource,

//funckeyselector);

ienumerable query =fruits.orderby(fruit => fruit.length).thenby(fruit =>fruit);

foreach (string fruit in

query)

view code

thenbydescending 按降序對序列中的元素執行後續排序

string fruits = ;

//public static iorderedenumerablethenbydescending(this iorderedenumerablesource,

//funckeyselector);

ienumerable query =fruits

.orderby(fruit =>fruit.length)

.thenbydescending(fruit => fruit[0

]);foreach (string fruit in

query)

view code

linq標準查詢運算子

適用場景 對查詢出的語句進行排序,比如按時間排序等等。說明 按指定表示式對集合排序 延遲,按指定表示式對集合排序 延遲,預設是公升序,加上descending表示降序,對應的擴充套件方法是orderby和orderbydescending 這個例子使用 orderby 按雇用日期對雇員進行排序 va...

MVC 標準查詢運算子

標準查詢運算子 定義在system.linq.enumerable類中的50多個為ienumerable準備的擴充套件方法,這些方法用來 對它操作的集合進行查詢篩選。篩選集合where 需要提供乙個帶bool返回值的 篩選器 從而表明集合中某個元素是否應該被返回。查詢投射,返回新物件集合ienume...

LINQ之運算子轉換

使用 asenumerable可返回型別化為泛型 ienumerable 的引數。在此示例中,linq to sql 使用預設泛型 query 會嘗試將查詢轉換為 sql 並在伺服器上執行。但 where 子句引用使用者定義的客戶端方法 isvalidproduct 此方法無法轉換為 sql。解決方...