C# 3.0入門系列(九)-之GroupBy操作

來源:互聯網
上載者:User

有朋友反饋說我提供的sample不能編譯。大概是版本的問題,可以到http://msdn2.microsoft.com/en-us/bb330936.aspx下載for beta1的版本。本節接著講groupby。

上一節,我們講了如何理解groupby返回的結果。本節會延這個思路闡述下去。先來看下面的例子

GroupBy操作中Select的匿名類

var q = from p in db.Products
group p by p.CategoryID into g
select new { CategoryID = g.Key, g };

本例中,select操作中使用了匿名類。本系列中第一次提到匿名類是在http://www.cnblogs.com/126/archive/2006/12/20/503519.html一文中。本文將再一次,闡述匿名類的理解。所謂匿名類,其實質,並不是匿名,而是編譯器幫你去建立了這麼一個類,在使用者看來,好像並沒有去建立,此所謂匿名類。也就是說,編譯器在編譯時間,還是有這個類的,這個類是編譯器自己建立的,其名稱是編譯器界定的。 在上例的匿名類中,有2個property,一個叫CategoryID, 一個叫g。 大家要注意了,這個匿名類,其實質是對返回結果重新進行了封裝。而那個叫做g的property,就封裝了一個完整的分組。如圖,仔細比較和上篇圖的區別。

如果,使用下面的語句。

var q = from p in db.Products
group p by p.CategoryID into g
select new { CategoryID = g.Key,GroupSet = g };

只是把g重新命名為GroupSet.需要用下面的遍曆,擷取每個產品紀錄。

foreach (var gp in q)
{
 if (gp.CategoryID == 7)
 { 
  foreach (var p in gp.GroupSet)
  {

  }
 }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.