Tôi muốn nhóm các mục từ truy vấn LINQ bên dưới tiêu đề, do đó đối với mỗi tiêu đề tôi có danh sách các đối tượng khớp với tiêu đề tiêu đề. Tôi cho rằng giải pháp sẽ là sử dụng ToDictionary để chuyển đổi các đối tượng, nhưng điều này chỉ cho phép một đối tượng cho mỗi "nhóm" (hoặc khóa từ điển). Tôi cho rằng tôi có thể tạo từ điển kiểu (String, List Of()), nhưng tôi không thể tìm ra cách viết nó.Làm cách nào để sử dụng LINQ ToDictionary để trả về một từ điển có nhiều giá trị trong các mục từ điển?
Ví dụ tôi đã viết một phiên bản đơn giản dưới đây.
Public Class order
Public ID As Integer
Public Name As String
Public DateStamp As Date
End Class
Public Function GetOrdersSortedByDate() As Generic.Dictionary(Of String, Generic.List(Of User))
Dim orders As New List(Of order)(New order() _
{New order With _
{.ID = 1, .Name = "Marble", .DateStamp = New Date(2010, 1, 1)}, _
New order With _
{.ID = 2, .Name = "Marble", .DateStamp = New Date(2010, 5, 1)}, _
New order With _
{.ID = 3, .Name = "Glass", .DateStamp = New Date(2010, 1, 1)}, _
New order With _
{.ID = 4, .Name = "Granite", .DateStamp = New Date(2010, 1, 1)}})
' Create a Dictionary that contains Package values,
' using TrackingNumber as the key.
Dim dict As Dictionary(Of String, List(Of order)) = _
orders.ToDictionary(Of String, List(Of order))(Function(mykey) mykey.Name, AddressOf ConvertOrderToArray) ' Error on this line
Return dict
End Function
Public Function ConvertOrderToArray(ByVal myVal As order, ByVal myList As Generic.List(Of order)) As Generic.List(Of order)
If myList Is Nothing Then myList = New Generic.List(Of order)
myList.Add(myVal)
Return myList
End Function
Các lỗi như sau
'Public Function ConvertOrderToArray(myVal As order, myList As System.Collections.Generic.List(Of order)) As System.Collections.Generic.List(Of order)'
does not have a signature compatible with delegate
'Delegate Function Func(Of order, System.Collections.Generic.List(Of order))(arg As order) As System.Collections.Generic.List(Of order)'.
Tôi phải làm gì để ra một danh sách cho mỗi mục từ điển?
Dim f = d.GroupBy (Hàm (x) x.PoolName) .ToDictionary (Hàm (t) t.Key, Hàm (g) g.ToList()) - Tôi sẽ cho nó đi! – digiguru
Điều này làm việc như một giấc mơ, cảm ơn – digiguru