この前は「ペンギンを探した」んですが
http://blogs.wankuma.com/esten/archive/2007/12/31/115566.aspx
今度は数えてみようという企画(笑)元のペンギンデータは一緒です。
msg = ""
For Each PenPen In From Pen In Penguins Group Penguins By Key = Pen.Item("Nestle") Into Count()
msg += PenPen.Key & ":" & PenPen.Count & Chr(13)
Next
MsgBox(msg, , "営巣場所ごとのペンギン種類数")
今度はNestle別にGroupByしてCountを取りました。ポイントは、Group句の書き方がちょっとSQLと違うところ。慣れているとつい、GroupBy(KEY列)と書きたくなるけど、LINQではそうでなくて、Group グループ名(任意) By KEY名(任意) = グループ列句 の形式を取るところです。このKEY句はWhere句で使用することができるので、
msg = ""
For Each PenPen In From Pen In Penguins Group Penguins By Key = Pen.Item("Nestle") Into Count() _
Where Key = "岩場"
msg += PenPen.Key & ":" & PenPen.Count & Chr(13)
Next
MsgBox(msg, , "岩場に営巣するペンギン種類数")
とか、
msg = ""
For Each PenPen In From Pen In Penguins Group Penguins By Key = Pen.Item("Nestle") Into Count() _
Where Count = 1
msg += PenPen.Key & ":" & PenPen.Count & Chr(13)
Next
MsgBox(msg, , "営巣するペンギンが一種類")
とか言った条件設定に使うことができます。SQLのHAVING句に近い感覚です。SQLを使いこなしている人にはちょっと癖が強いかもですけれど、基本は同じ。しっかりつかめれば大丈夫大丈夫(笑)
というわけで、今年もよろしくお願いします