2012-04-24 11 views
1

documentationが複数の特性にグループ化についての例がありますエンティティにLinqを使用して匿名型を使用せずにコレクションをグループ化するにはどうすればよいですか?

Dim custRegionQuery = From cust In db.Customers _ 
    Group cust.ContactName By Key = New With _ 
     {cust.City, cust.Region} Into grouping = Group 

For Each grp In custRegionQuery 
    Console.WriteLine(vbNewLine & "Location Key: {0}", grp.Key) 
    For Each listing In grp.grouping 
     Console.WriteLine(vbTab & "{0}", listing) 
    Next 
Next 

は、Iキーの各要素のプロパティ、ならびにグループのプロパティを有する実際のタイプ(すなわち、匿名ではない)を有していると仮定ので、少しのようなもの:

Public Class CustomerRegionGroup 

    Public Sub New(city As String, region as String, customers As IEnumerable(Of Customer)) 
     Me.City = city 
     Me.Region = region 
     Me.Customers = customers 
    End Sub 

    Public Property City As String 
    Public Property Region As String 
    Public Property Customers As IEnumerable(Of Customer) 
End Class 

はそれだけでIEnumerable(Of CustomerRegionGroup)を返すために、または私は匿名型を使用する必要がない、と最初の結果に2番目のクエリを実行し、元の問合せをリライトすることは可能ですか?

答えて

0

私はあなただけで行うことができることを感謝していなかったとして、それは私が試したいことのいくつかよりもずっと簡単だったが判明:

Dim custRegionQuery = From cust In db.Customers _ 
         Group By cust.City, cust.Region _ 
         Into Group _ 
         Select New CustomerRegionGroup(City, Region, Group) 
関連する問題