LINQ查詢操作符是一組構造查詢模式的附加方法。
這些操作符提供了各種查詢特性,作為LINQ查詢表達式的構建塊,例如過濾、排序、投影、聚合等等。
根據功能的不同,LINQ查詢操作符可以分為以下幾類:
1.排序操作:排序允許您根據一個或多個屬性對序列中的項進行排序。
例子
操作符 |
細節 |
c#查詢表達式語法 |
VB查詢表達式語法 |
OrderBy |
值按運算符升序排序 |
OrderBy |
命令 |
OrderByDescending |
值使用操作符按降序排序 |
orderby……下行 |
訂購…下行 |
ThenBy |
作為補充排序,按升序對項進行排序 |
序……,…… |
由…訂購,… |
ThenByDescending |
按降序進行二級排序 |
順序…,…降序 |
順序依次遞減 |
反向 |
反轉集合中片段的顯示順序 |
不適用 |
不適用 |
要對數據進行排序,需要使用所有這些排序操作符。另一方麵,REVERSE操作符翻轉集合中的對象。Rest操作符用於以與SQL的Order by子句相同的方式對數據進行排序。這些排序操作符與SQL操作符類似,除了我們使用的是LINQ操作符。
2.投影操作投影是將一個物體轉化為隻具有某些特性的新形式的過程。
例子:
操作符 |
細節 |
c#查詢表達式語法 |
VB查詢表達式語法 |
選擇 |
基於變換函數,運算符投射值。 |
選擇 |
選擇 |
SelectMany |
運算符將基於變換函數的值序列平展並投影為單個序列。 |
使用多個from從句 |
使用多個from從句 |
3.連接:連接兩個序列,在操作方麵與Union操作符相同,隻是它不刪除重複項。
例子:
操作符 |
細節 |
c#查詢表達式語法 |
VB查詢表達式語法 |
Concat |
兩個序列組合成一個序列 |
不適用 |
不適用 |
LINQ中的Concat過程或操作符用於將兩個集合元素連接或附加到單個集合中,盡管它不刪除重複項。
4.分區操作符:在不改變元素的情況下將輸入數據分成兩部分,然後返回幾個部分中的一個。
例子:
操作符 |
細節 |
c#查詢表達式語法 |
VB查詢表達式語法 |
跳過 |
在跳過序列中指定數量的條目後返回剩餘的元素 |
不適用 |
跳過 |
取 |
從繼承中提取一定數量的組件,忽略其餘部分 |
不適用 |
取 |
SkipWhile |
與Skip類似,隻不過要跳過的元素數量是由布爾條件決定的 |
不適用 |
跳過, |
TakeWhile |
唯一的區別是,要使用的組件數量是由布爾條件決定的。 |
不適用 |
取而 |
您可以將一個類別的項目分成兩部分,並使用這些操作符交付列表的一部分。
集合操作:集合操作包括四個操作符,每個操作符的結果基於一組不同的標準。
例子:
操作符 |
細節 |
c#查詢表達式語法 |
VB查詢表達式語法 |
相交 |
返回在兩個不同的集合中發現相同的值集 |
不適用 |
不適用 |
截然不同的 |
通過過濾重複數據(如果有),從集合中生成唯一值的列表 |
不適用 |
截然不同的 |
除了 |
比較兩個集合的值,並返回一個集合中不在另一個集合中的值 |
不適用 |
不適用 |
聯盟 |
將兩個單獨的集合的材料合並為一個集合,沒有重複 |
不適用 |
不適用 |
所有這些set操作符將執行不同的操作,例如從集合中刪除冗餘元素,組合集合的所有元素,或者從集合中保留一些facet,這取決於我們的需要。
6.元素運營商:除了DefaultIfEmpty之外,其他8個常見的查詢組件操作符都從集合中檢索單個組件。