成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

LINQ查詢方式的探尋

開發 后端
我們在使用LINQ查詢的使用的時候有LINQ投影以及使用LINQ的擴展方法,那么具體的操作實現是如何的呢?那么這里就向你詳細介紹相關的內容。

LINQ投影以及使用LINQ的擴展方法是我們經常使用LINQ查詢方法,那么關于LINQ投影以及使用LINQ的擴展方法有什么需要我們注意的方面么?讓我們來看看具體的實現。

1、LINQ查詢之LINQ投影

如果說剛才的查詢,還只是很簡單的查詢,那么結合匿名類來實現投影查詢,則是LINQ提供的一個利器,這種方法非常靈活,同時也滿足了我們絕大部分的查詢需求。下面我們來看一個例子:我們需要查詢出部門工資的總和,怎么做呢?

  1. var query = from department in dbdata.Departments  
  2.  
  3.                 select  new{ depid = department.DepId, depname=  
  4.  
  5. department.DepName, depsalary =  
  6.  
  7. department.Employees.Sum(e => e.EmployeeSalary) };  

這句查詢語句中,在new關鍵字后面生成了一個匿名類,這個類有三個屬性,分別是 depid,depname和depsalary,其中,depsalary是經過計算獲得,這句話被轉換成:

  1. SELECT [t0].[DepId] AS [depid], [t0].[DepName] AS [depname],  
  2.  
  3. (SELECT SUM([t1].[EmployeeSalary]) FROM [dbo].[Employee]  
  4.  
  5. AS [t1] WHERE [t1].[DepId] = [t0].[DepId] ) AS [depsalay]  
  6.  
  7. FROM [dbo].[Department] AS [t0]  

好優雅的代碼,實在是太方便了。

2、LINQ查詢之使用LINQ的擴展方法

LINQ提供了很多擴展方法,方便我們做各種查詢,我們來看幾個典型的擴展方法:

a)使用LINQ的擴展方法之Average、Max

  1. Decimal x = dbdata.Employees.Average(e => e.EmployeeSalary);  
  2.  
  3. Decimal y = dbdata.Employees.Max(e => e.EmployeeSalary);  

這是計算出員工的平均工資與最大工資,你不需要編寫任何的SQL語句,Orcas中提供的LINQ到SQL對象關系映射器會處理獲取,跟蹤,和更新映射到你的數據庫數據定義和存儲過程的對象。你只要使用任何LINQ擴展方法對結果進行過濾和構形即可,LINQ到SQL會執行獲取數據所需的SQL代碼(注意,上面的 Average和Max 擴展方法很明顯地不會從數據表中返回所有的數據行,它們會使用TSQL的聚合函數來計算數據庫中的值,然后只返回一個標量值)。

b)使用LINQ的擴展方法之Where、OrderBy

有時候,我們只對某張表做簡單的查詢和排序,那么,這個時候不必寫冗長的LINQ語句,直接使用LINQ擴展方法即可,如:

  1. var query = dbdata.Employees.  
  2.  
  3. Where(e => e.EmployeeSalary > 2000).  
  4.  
  5. OrderBy(e => e.EmployeeName);  

這里使用了Lambda語法,這句話被轉換成以下的SQL語句:

  1. SELECT [t0].[EmployeeId], [t0].[DepId], [t0].[EmployeeName],  
  2.  
  3. [t0].[EmployeeSalary] FROM [dbo].[Employee] AS [t0]  
  4.  
  5. WHERE [t0].[EmployeeSalary] > @p0 ORDER BY [t0].[EmployeeName]  

以上是通過利用由Lambda提供的對表達式樹支持,以及IQueryable<T>接口來實現的,代碼干凈整潔。

C)使用LINQ的擴展方法之Take、Skip

對于大批量的數據處理,一直是開發人員的比較頭疼的事情,微軟在.NET1.1到2.0中的Gridview等控件,對大批量數據的處理上一直都不是很理想,LINQ對于大批量數據的處理,可以很好的解決這個方面的問題。

  1. var query = dbdata.Employees.Skip(10).Take(10); 

這句話表示跳過該表的10條記錄,再取10條,也就是取第11至20條記錄,轉換成SQL語句如下:

  1. SELECT [t1].[EmployeeId], [t1].[DepId], [t1].[EmployeeName],  
  2.  
  3. [t1].[EmployeeSalary] FROM (SELECT ROW_NUMBER()  
  4.  
  5. OVER (ORDER BY [t0].[EmployeeId], [t0].[DepId], [t0].[EmployeeName],  
  6.  
  7. [t0].[EmployeeSalary]) AS [ROW_NUMBER], [t0].[EmployeeId], [t0].[DepId],  
  8.  
  9. [t0].[EmployeeName], [t0].[EmployeeSalary] FROM [dbo].[Employee]  
  10.  
  11. AS [t0]) AS [t1] WHERE [t1].[ROW_NUMBER] BETWEEN @p0 + 1 AND  
  12.  
  13. @p0 + @p1 ORDER BY [t1].[ROW_NUMBER]  

從以上這句SQL語句來看,最消耗性能分頁操作完全交給了數據庫操作,其處理的機制不再像Gridview控件的分頁,是將數據全部取出,然后再進行分頁顯示,因此效率上要高了很多。

D)使用LINQ的擴展方法之ToList和ToArray

在默認情況下,查詢結果的數據類型是IEnumerable<T>類型,可能很多開發人員并不習慣這個類型,而更加喜歡集合或者是數組,那么沒關系,可以使用ToList或者是ToArray來將查詢結果轉換成集合或者數組。在這里,我們需要知道的是:使用查詢語句查詢結果的時候,實際上并沒有真正操作數據庫,這里是運用的延遲加載的機制,如果不希望使用延遲加載,而是需要立刻知道查詢的結果時,使用ToList或者是ToArray便可以做到。這是非常有用的機制。比如我們需要顯示兩個部門的員工時,部門可以先取出放置在List中,然后再依次取出各個部門的員工,這時訪問的效率要高一些,因為不需要每次都訪問數據庫去取出部門。

LINQ查詢之LINQ投影以及使用LINQ的擴展方法的使用就向你介紹到這里,希望對你了解和學習LINQ查詢遺跡LINQ投影和使用LINQ的擴展方法有所幫助。

【編輯推薦】

  1. LINQ模糊查詢學習體驗淺析
  2. LINQ To SQL和ORM的理解淺析
  3. 關于LINQ模糊查詢實質的探究
  4. LINQ模糊查詢的學習心得淺析
  5. LINQ嵌套查詢實現淺析
責任編輯:仲衡 來源: 百度空間
相關推薦

2009-09-15 09:33:46

linq多條件查詢

2009-09-14 18:53:27

LINQ查詢

2009-09-14 19:14:51

LINQ動態查詢

2009-09-17 17:03:13

LINQ動態查詢

2009-09-15 10:35:11

linq多表查詢

2009-09-09 16:53:53

LINQ查詢語法

2009-09-10 16:28:17

LINQ查詢

2009-09-14 10:09:26

LINQ查詢結果

2009-09-14 10:13:02

LINQ查詢操作

2009-09-08 17:27:18

LINQ to Dat

2009-09-15 10:46:04

LINQ to SQL

2009-09-16 10:38:43

LINQ查詢

2009-09-17 13:15:20

LINQ查詢

2009-09-16 10:08:06

LINQ查詢

2013-02-26 09:34:10

服務器虛擬化云部署

2013-02-27 16:03:48

云部署服務器虛擬化

2009-09-17 08:47:00

Linq查詢

2009-09-14 18:06:18

LINQ模糊查詢

2009-08-27 10:22:40

LINQ查詢

2012-04-13 10:00:04

LINQ
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲品质自拍视频网站 | 久久久久黑人 | 色网在线观看 | 久久黄视频 | 亚洲成人精品久久 | 国产精品性做久久久久久 | 国产精品99久久久久久久久久久久 | 国产免费视频 | 久久精品免费 | 国产精品美女视频 | 男女久久久| 一区二区视频免费观看 | 天天操天天操 | 在线 丝袜 欧美 日韩 制服 | 日韩手机在线看片 | 91亚洲国产 | 国产成人精品久久二区二区91 | 自拍视频在线观看 | h视频在线观看免费 | 免费看淫片 | 激情欧美一区二区三区中文字幕 | 91亚洲国产成人久久精品网站 | 国产极品粉嫩美女呻吟在线看人 | 亚洲一区二区在线播放 | 国产精品视频入口 | 国产高清视频一区 | 欧美色a v| 日本国产一区二区 | 国产三级一区二区三区 | 久久免费看| 日本人做爰大片免费观看一老师 | 蜜桃精品视频在线 | a级片网站 | 亚洲精品久久久蜜桃 | 欧洲一区在线观看 | 成人欧美一区二区三区在线播放 | 日本不卡免费新一二三区 | 久久成人久久 | 久久狠狠 | 黄色大片观看 | 日韩欧美不卡 |