Я хочу группировать по списку с помощью VB.Net. Кажется простым, но я не могу заставить его работать. Я пробовал:Linq Group По нескольким свойствам в VB.Net
Dim groupedEmails = saEmails.GroupBy(Function(m) New With {m.Property1, m.Property2, m.Property3.SubProperty1})
У меня есть 6 пунктов в saEmails и две детали имеют один и тот же property1, свойство2 и Property3. К сожалению, во время выполнения я все еще получаю 6 элементов в groupedEmails, хотя моя группировка должна уменьшить это число до 5.
Я пробовал утверждение без «New With» (он все еще компилируется), но результатом является одна и та же. Я также не могу получить Linq для Entities («От почты в saEmails ...»), чтобы принять мое использование ключевого слова «Группа». У меня есть Импорт ed System.Linq.
Я также был бы доволен рабочим использованием .ToLookup().
Субъекты похожи на это:
Namespace Something
<DataContract()>
Public Class SAEmail
<DataMember()>
Public Property Property1 As Integer
<DataMember()>
Public Property Property2 As String
<DataMember()>
Public Property Property3 As Blah
<DataMember()>
Public Property Property4 As String
Public Overrides Function Equals(obj As Object) As Boolean
If obj Is Nothing OrElse Not Me.GetType() Is obj.GetType() Then
Return False
End If
Dim email As SAEmail = CType(obj, SAEmail)
Return Property1 = email.Property1 _
AndAlso Property2 = email.Property2 _
AndAlso Property1.SubProperty1 = email.Property3.SubProperty1
End Function
Public Overrides Function GetHashCode() As Integer
Return CInt(CLng(Property1) Xor CLng(Property2) Xor CLng(Property3.SubProperty1))
End Function
End Class
<DataContract()>
Public Class Blah
<DataMember()>
Public Property SubProperty1 As Integer
<DataMember()>
Public Property SubProperty2 As String
End Class
End Namespace
Идеи?
Можете ли вы опубликовать определение 'saEmails' и его класс? – Enigmativity
ОК, я добавил выше. – Dewey
Опубликуйте данные в своей коллекции в Property1, Property2, SubProperty1 – Tim