Linq查詢語法與擴充方法

綠龍術士發表於2018-03-23

概念:語言整合查詢(Language Integrated Query,Linq)在C#中整合了查詢語法,可以用相同的語法訪問不同的資料來源。Linq提供了不同資料來源的抽象層,所以可以使用相同的語法。

並不是所有的查詢都可以用Linq查詢語法完成。也不是所有的擴充方法都對映到Linq查詢子句上。高階查詢需要使用擴充方法。

Linq有兩種語法風格:

  1. 查詢語法(Query Syntax)”,這種語法格式類似於SQL查詢。
  2. 點語法(Dot-nontation Syntax)”,這種語法是基於擴充方法的。

“查詢語法”的格式:查詢表示式必須以from開頭,以select或group結束。在這兩個子句中間可以使用where,orderby,join,let和其他from子句。

Linq有的方法有延遲的特性,這個特性的效果是直到對結果進行遍歷,才會執行該查詢。

擴充方法

描述

延遲

All

如果資料來源的所有條目都與謂詞匹配,則返回true

Any

如果資料來源至少有一個條目與謂詞匹配,則返回true

Contains

如果資料來源包含指定的條目或值,返回true

Count

返回資料來源的條目數

First

返回資料來源的第一個條目

FirstOrDefault

返回資料來源的第一個條目,或無條目時,返回預設值

Last

返回資料來源最後一個條目

LastOrDefault

返回資料來源最後一個條目,或無條目時,返回預設值

Max或Min

返回由Lamdba表示式表示的最大值或最小值

OrderBy

OrderByDesceding

基於Lambda表示式返回值對資料來源進行排序

Reverse

反轉資料來源中資料項的順序

Select

設計一個查詢結果

SelectMany

把每個資料項投射到一個條目序列中,然後把所有的這些結果序列連線成一個序列

Single

返回資料來源第一個條目,或者有多個匹配時丟擲異常

SingleOrDefault

返回資料來源第一個條目,或無條目時,返回預設值;有多個條目匹配時,丟擲一個異常

Skip

SkipWhile

跳過指定數目的元素,或者當謂詞匹配時跳過

Sum

對謂詞選定的詞求和

Take

TakeWhile

從資料來源的開始處選擇指定數目的元素,或當謂詞匹配時選擇條目

ToArray

ToDictionary

ToList

把資料來源轉成陣列,字典,列表

Where

過濾資料來源中與謂詞不匹配的條目

 

相關文章