天天看點

SQL、LINQ和Lambda表達式

首先說說這三者完全是三種不同的東西,SQL是結構化查詢語言(Structured Query Language)簡稱,這大家再熟悉不過了,下面主要介紹LINQ和Lambda表達式的基本概念以及同一查詢這三者的不同實作。

LINQ(Language Integrate Query)是語言內建查詢他在對象和資料之間建立一種對應的關系,可以使用通路記憶體對象的方式查詢資料集合。LINQ查詢是C#中的一種語言構造。是以開發人員可以再C#代碼彙總嵌套類似于SQL語句的查詢表達式,進而實作資料查詢的功能。LINQ也不是簡單地作為C#中嵌套查詢表達式,而是将查詢表達式作為C#的一種文法。

在.NET類庫中,LINQ相關類庫都在System.Linq命名空間下,該命名空間提供支援使用LINQ進行查詢的類和接口,其中最主要的是以下兩個類和兩個接口。

※IEnumerable接口:它表示可以查詢的資料集合,一個查詢通常是逐個對集合中的元素進行篩選操作,傳回一個新的IEnumerable接口,用來儲存查詢結果。

※IQueryable接口:他繼承IEnumerable接口,表示一個可以查詢的表達式目錄樹。

※Enumerable類:它通過對IEnumerable提供擴充方法,實作LINQ标準查詢運算符。包括過路、導航、排序、查詢、聯接、求和、求最大值、求最小值等操作。

※Queryable類:它通過對IQueryable提供擴充方法,實作LINQ标準查詢運算符。包括過路、導航、排序、查詢、聯接、求和、求最大值、求最小值等操作。

Lambda表達式實際上是一個匿名函數,它可以說是對LINQ的補充。由于LINQ查詢關鍵字和IEnumerable接口的方法之間有一個對應關系,但是LINQ查詢表達式中可以使用的查詢功能很少。在實際開發中通過查詢結果或資料源進行方法調用,進而進行更多的查詢操作。由于Lambda表達式是匿名函數,它可以指派到一個委托,而在IEnumerable接口的方法中很多通過函數委托來實作自定義運算、條件等操作,是以Lambda表達式在LINQ中被廣泛使用。

※查詢全部内容

※按列查詢

※distinct去重查詢

※兩個區間内查詢

※在一個範圍内查詢

※或關系查詢

※排序

※行數查詢

※平均值查詢

※潛逃查詢

※分組

※分組過濾

※多表聯合查詢

以上内容是本人查閱資料做的一些整理和總結,有不足之處請大家批評指正!