【发布时间】:2020-04-29 22:43:16
【问题描述】:
我有一个当前返回对象数组 (JSON) 的 .net webapi 端点。
我正在尝试按创建日期对项目进行分组,但我无法制定 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 是必需的,因为在将项目添加到列表之前还会发生一些其他事情。
我拥有的语法(不工作,无法解决 select into):
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()})
【问题讨论】: