У меня есть конечная точка. net webapi, которая в настоящее время возвращает массив объектов (JSON).
Я пытаюсь сгруппировать элементы по дате создания, но я не могу обработать оператор LINQ для достижения этой цели.
Класс:
Public Class mImage
Public Property fileName As String
Public Property id As Guid
Public Property description As String
Public Property createDate As DateTime
End Class
Public Class mImageParent
Public Property groupDate As DateTime
Public Property images As List(Of mImage)
Public Property groupCount As Integer
End Class
Мой текущий JSON возврат выглядит следующим образом:
obj: [
{"fileName":"a","id":"1","createDate":"1-1-2020"},
{"fileName":"b","id":"2","createDate":"1-1-2020"},
{"fileName":"c","id":"3","createDate":"2-1-2020"}
]
Где я пытаюсь вернуть его как:
obj: {"groupDate":"1-1-2020",
"images": [
{"fileName":"a","id":"1","createDate":"1-1-2020"},
{"fileName":"b","id":"2","createDate":"1-1-2020"}
]},
{"groupDate":"2-1-2020",
"images": [
{"fileName":"c","id":"3","createDate":"2-1-2020"}
]}
Текущий код, который просто выбирается без группировки LINQ (vb. net):
Dim imageResult = (From p In db.file_images Where p.user_id = userIdParam).ToList()
For each p in imageResult
mImageList.Add(New mImage With {.id = p.image_id, .description = p.image_desc, .fileName = p.image_file, .createDate= p.create_timestamp})
Next
Я не могу разобраться, как выбирать по группам. Требуется for..each, потому что некоторые другие вещи продолжаются до того, как элемент добавляется в список.
Синтаксис, который у меня есть (не работает, не может обработать выбор в):
Dim imageResultGroup = (From p in db.file_images where p.user_id = userIDParam).GroupBy(Function(g) g.create_timestamp).Select(Function(grp) New mImageParent with {.groupDate = grp.Key, images = grp.ToList()})