LINQ - 查詢運算子



一組構成查詢模式的擴充套件方法稱為LINQ標準查詢運算子。作為LINQ查詢表示式的構建塊,這些運算子提供了多種查詢功能,例如過濾、排序、投影、聚合等。

LINQ標準查詢運算子可以根據其功能分為以下幾類。

  • 過濾運算子
  • 連線運算子
  • 投影操作
  • 排序運算子
  • 分組運算子
  • 轉換
  • 連線
  • 聚合
  • 量詞操作
  • 分割槽操作
  • 生成操作
  • 集合操作
  • 相等性
  • 元素運算子

過濾運算子

過濾是一種限制結果集的操作,以便它只包含滿足特定條件的選定元素。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
where 根據謂詞函式過濾值 where Where
OfType 根據值能否轉換為指定型別來過濾值 不適用 不適用

連線運算子

連線是指一種操作,其中目標是資料來源,這些資料來源之間以直接方式難以跟蹤其關係。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
Join 該運算子基於匹配的鍵連線兩個序列 join … in … on … equals … From x In …, y In … Where x.a = y.a
GroupJoin 連線兩個序列並對匹配的元素進行分組 join … in … on … equals … into … Group Join … In … On …

投影操作

投影是一種操作,其中物件被轉換成一個全新的形式,只包含特定的屬性。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
Select 該運算子基於轉換函式投影值 select Select
SelectMany 該運算子投影基於轉換函式的值序列,並將它們展平為單個序列 使用多個 from 子句 使用多個 From 子句

排序運算子

排序操作允許根據一個或多個屬性對序列的元素進行排序。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
OrderBy 該運算子按升序排序值 orderby Order By
OrderByDescending 該運算子按降序排序值 orderby ... descending Order By ... Descending
ThenBy 執行二次升序排序 orderby …, … Order By …, …
ThenByDescending 執行二次降序排序 orderby …, … descending Order By …, … Descending
Reverse 反轉集合中元素的順序 不適用 不適用

分組運算子

這些運算子根據共同的共享屬性將資料放入一些組中。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
GroupBy 將專案序列組織成組,並將其作為 IGrouping<key, element> 型別的 IEnumerable 集合返回。 group … by -or- group … by … into … Group … By … Into …
ToLookup 執行分組操作,其中返回鍵值對序列 不適用 不適用

轉換

這些運算子更改輸入物件的型別,並用於各種各樣的應用程式。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
AsEnumerable 將輸入型別返回為 IEnumerable<T> 不適用 不適用
AsQueryable 將 (泛型) IEnumerable 轉換為 (泛型) IQueryable 不適用 不適用
Cast 將集合的元素強制轉換為指定型別 使用顯式型別的範圍變數。例如:from string str in words From … As …
OfType 根據值能否轉換為特定型別來過濾值 不適用 不適用
ToArray 強制執行查詢並將集合轉換為陣列 不適用 不適用
ToDictionary 基於鍵選擇器函式將元素設定到 Dictionary<TKey, TValue> 中,並強制執行 LINQ 查詢 不適用 不適用
ToList 透過將集合轉換為 List<T> 來強制執行查詢 不適用 不適用
ToLookup 強制執行查詢,並基於鍵選擇器函式將元素放入 Lookup<TKey, TElement> 中 不適用 不適用

連線

執行兩個序列的連線,在其操作方面與 Union 運算子非常相似,只是它不刪除重複項。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
Concat 連線兩個序列以形成單個序列。 不適用 不適用

聚合

執行任何型別的所需聚合,並允許在 LINQ 中建立自定義聚合。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
Aggregate 對集合的值進行操作以執行自定義聚合操作 不適用 不適用
Average 計算值集合的平均值 不適用 Aggregate … In … Into Average()
Count 計算集合中滿足謂詞函式的元素個數 不適用 Aggregate … In … Into Count()
LongCount 計算大型集合中滿足謂詞函式的元素個數 不適用 Aggregate … In … Into LongCount()
Max 查詢集合中的最大值 不適用 Aggregate … In … Into Max()
Min 查詢集合中的最小值 不適用 Aggregate … In … Into Min()
Sum 查詢集合中值的總和 不適用 Aggregate … In … Into Sum()

量詞操作

這些運算子返回布林值,即 True 或 False,具體取決於序列中的一些或所有元素是否滿足特定條件。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
All 如果序列的所有元素都滿足謂詞條件,則返回“True”值 不適用 Aggregate … In … Into All(…)
Any 透過搜尋序列來確定序列中的任何元素是否滿足指定條件 不適用 Aggregate … In … Into Any()
Contains 如果找到序列中存在特定元素,則返回“True”值;如果序列中不包含該特定元素,則返回“false”值 不適用 不適用

分割槽運算子

將輸入序列分成兩個單獨的部分,而不重新排列序列的元素,然後返回其中一個部分。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
Skip 跳過序列中指定數量的元素,並返回其餘元素 不適用 Skip
SkipWhile 與 Skip 相同,唯一的例外是跳過的元素數量由布林條件指定 不適用 Skip While
Take 從序列中獲取指定數量的元素,並跳過其餘元素 不適用 Take
TakeWhile 與 Take 相同,只是獲取的元素數量由布林條件指定 不適用 Take While

生成操作

生成運算子建立新的值序列。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
DefaultIfEmpty 應用於空序列時,在序列中生成預設元素 不適用 不適用
Empty 返回一個空值序列,是最簡單的生成運算子 不適用 不適用
Range 生成包含整數或數字序列的集合 不適用 不適用
Repeat 生成包含特定長度重複值的序列 不適用 不適用

集合操作

集合操作有四個運算子,每個運算子根據不同的條件產生結果。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
Distinct 透過過濾任何重複資料,從集合中生成唯一值的列表 不適用 Distinct
Except 比較兩個集合的值,並返回一個集合中不在另一個集合中的值 不適用 不適用
Intersect 返回在兩個單獨集合中被發現相同的數值集合 不適用 不適用
Union 將兩個不同集合的內容組合成單個列表,而且不包含任何重複內容 不適用 不適用

相等性

比較兩個句子(可列舉的)並確定它們是否完全匹配。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
SequenceEqual 如果發現兩個序列彼此相同,則返回布林值 不適用 不適用

元素運算子

除了 DefaultIfEmpty 之外,其餘八個標準查詢元素運算子都從集合中返回單個元素。

顯示示例

運算子 描述 C# 查詢表示式語法 VB 查詢表示式語法
ElementAt 返回集合中特定索引中存在的元素 不適用 不適用
ElementAtOrDefault 與 ElementAt 相同,只是如果特定索引超出範圍,它還會返回預設值 不適用 不適用
First 檢索集合中的第一個元素或滿足特定條件的第一個元素 不適用 不適用
FirstOrDefault 與 First 相同,只是如果不存在此類元素,它還會返回預設值 不適用 不適用
Last 檢索集合中存在的最後一個元素或滿足特定條件的最後一個元素 不適用 不適用
LastOrDefault 與 Last 相同,只是如果不存在任何此類元素,它還會返回預設值 不適用 不適用
Single 返回集合的單個元素或滿足特定條件的單個元素 不適用 不適用
SingleOrDefault 與 Single 相同,只是如果不存在任何此類單個元素,它還會返回預設值 不適用 不適用
DefaultIfEmpty 如果集合或列表為空或為 null,則返回預設值 不適用 不適用
廣告
© . All rights reserved.