在这个linq查询中,我从表中撤回所有实体。我想按一个ID对它们进行分组,然后按日期对这些组进行排序(如果存在),以及我想要按其他列排序的其余项目。 最初,我不需要对这些项进行分组,这就是我使用的代码:
Dim query = From task In Entities.Task
Select task
query = query.OrderBy(Function(task) task.DueDate).ThenBy(Function(task) task.TaskItemType.SortOrder)
但是,现在我想通过task.ItemId对此进行分组,但我不确定我是否正确使用.GroupBy
。我试过用这个:
query = query.GroupBy(Function(t) t.ItemId).OrderBy(Function(task) task.DueDate).ThenBy(Function(task) task.TaskItemType.SortOrder
但编译器无法在此确定task.DueDate
和警告
Type arguments cannot be inferred from the usage. Try specifying type arguments explicitly.
值得注意的是,task.ItemID
的类型为Nullable(Of Long)
,而task.DueDate
的类型为Nullable(Of Date)
我想我需要像
这样的东西query.GroupBy(Function(t) t.ItemID).OrderBy(Of ??)
我的回复声明如下:
Return query.AsEnumerable().Select(Function(task) New Task() With {
....
})
我只是不知道,也不明白这是怎么回事。
以下是一些示例数据:
Task 1
ItemID = 1
DueDate = 9/10/15
Task 2
ItemID = 1
DueDate = 9/12/15
Task 3
ItemID = 2
DueDate = 9/11/15
在这种情况下,我希望在(Task 1, Task2)
之前订购Task 3
小组