然后由Linq

时间:2015-09-10 14:05:54

标签: c# vb.net linq

在这个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小组

0 个答案:

没有答案