I have a VB.NET application and want to do Group By on multiple columns.
Class Structure:
Public Class Person
Public Property Name as
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
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.