linq的延遲執行方式分兩種,一種是流式,另一種是非流式。非流式處理運算子必須先讀取所有源資料,然後才能生成結果元素。
非流式處理的運算子包括:groupby、orderby、orderbydescending、reverse、thenby、thenbydescending
groupby
listpetslist =view codenew 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)
orderby,公升序
pet pets = ,view codenew pet ,
new pet };
//public static iorderedenumerableorderby(this ienumerablesource,
//funckeyselector);
ienumerablequery = pets.orderby(pet =>pet.age);
foreach (pet pet in
query)
- ", pet.name, pet.age);
}
orderbydescending,降序
list decimals =view codenew list ;
ienumerable
query =decimals.orderbydescending(num=>num);
foreach (decimal num in
query)
reverse,反轉序列中元素的順序
a', '
p', '
p', '
l', 'e'
};foreach (char chr in
reversed)
console.writeline();
view code
thenby 按公升序對序列中的元素執行後續排序
string fruits = ;view code//public static iorderedenumerablethenby(this iorderedenumerablesource,
//funckeyselector);
ienumerable query =fruits.orderby(fruit => fruit.length).thenby(fruit =>fruit);
foreach (string fruit in
query)
thenbydescending 按降序對序列中的元素執行後續排序
string fruits = ;view code//public static iorderedenumerablethenbydescending(this iorderedenumerablesource,
//funckeyselector);
ienumerable query =fruits
.orderby(fruit =>fruit.length)
.thenbydescending(fruit => fruit[0
]);foreach (string fruit in
query)
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。解決方...