Недавно я столкнулся со странным поведением LINQ, и мне трудно найти лог c за ним.
Я объявил список, содержащий 3 структуры, а затем применил .GroupBy к этому списку. Элементы группируются, но он также добавляет в список пустую структуру.
Вот пример:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
Dim lstTest As New List(Of structTest)
lstTest.Add(New structTest With {.intIndex = 1, .strValue = "some value"})
lstTest.Add(New structTest With {.intIndex = 1, .strValue = "some other value"})
lstTest.Add(New structTest With {.intIndex = 1, .strValue = "another value"})
Dim result As IEnumerable(Of IGrouping(Of UInteger, structTest)) = lstTest.GroupBy(Function(x) x.intIndex).ToList()
End Sub
Structure structTest
Dim intIndex As UInteger
Dim strValue As String
End Structure
Если я проверю переменную result с помощью Visual Studio, как это выглядит:
введите описание изображения здесь
Свойство .Count равно 3, но в списке 4 элемента, и последний элемент является пустым.
Мой вопрос: зачем нужен дополнительный элемент?