LINQ Group By with multiple parameters

后端 未结 2 1706
暗喜
暗喜 2021-02-04 06:28

I have a VB.NET application and want to do Group By on multiple columns.

Class Structure:

Public Class Person
   Public Property Name as         


        
相关标签:
2条回答
  • 2021-02-04 06:36
    Dim q1 = (From p In Repository.Table
                                Group p By p.CreatedDate.Year, p.CreatedDate.Month Into Group
                                Select New With {.Year = Year, .Month = Month, .Count = Group.Count()}).ToList
    

    Or

    Dim q2 = (From p In Repository.Table
                                Group p By key = New With {.Year = p.CreatedDate.Year, .Month = p.CreatedDate.Month} Into Group
                                Select New With {.Year = key.Year, .Month = key.Month, .Count = Group.Count()}).ToList
    
    0 讨论(0)
  • 2021-02-04 06:58

    The problem is that only Key properties in anonymous types are used in equality and hashing in VB. (All properties in C# anonymous types are effectively key properties.) So you just need to change your query to:

    Dim oResult = PersonList _
                    .GroupBy(Function(v) New With { Key v.City, Key v.Country}) _
                    .Where(Function(grp) grp.Count > 1).ToList()
    

    See the documentation for anonymous types in VB for more details.

    0 讨论(0)
提交回复
热议问题