程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> LINQ的分組聚合技術

LINQ的分組聚合技術

編輯:關於.NET

很大程度上來講,LINQ的工作方式很像SQL。查詢源定義、join、select和where子句都是相當標准的,而Group/By/Into子句則正是我們這裡要仔細說明的。SQL總是返回矩陣式數據集,與它不同的是,LINQ具備了返回層次化數據的能力,這也給它自己帶來了更多新的挑戰。

舉一個例子,將客戶按照所屬country和city進行分組查詢,在SQL中,可能會通過在客戶端手動分組或者執行1+N+(N*M)次查詢來實現,一個查詢用來獲取所有的國家,一個查詢用來獲取每個國家的所有城市,然後再逐個查詢出每個國家的每個城市下所有的客戶列表。

而在LINQ中,它可以通過一個帶有一系列子查詢的查詢語句一次性完成,當然,這也增加了查詢的復雜度。Mitsu演示如下:

var q =
from c in db.Customers
group c by c.Country into g
select new {
g.Key,
Count = g.Count(),
SubGroups = from c in g
group c by c.City into g2
select g2};

為說明LINQ框架的靈活性,Mitsu將它簡化到了僅一行:

var result = customers.GroupByMany(c => c.Country, c => c.City);

Mitsu用一種能適用於任何LINQ查詢的方式實現了它。你可以在他的博客上查看源碼以及關於它是如何工作的解釋文章。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved