0

我有这张名为 Projects 的表。

Name            Date           Hours
p1                  1/1/13         1
p1                  1/8/13         2
p1                  1/9/13         1
p2                  1/3/13         5
p2                  1/4/13         3

我想把这些聚合成这样的东西

p1    Tue    4
p2    Thu    8

我不知道如何获得 Date.Weekday 部分的最大计数。到目前为止,我已经尝试过这样的事情。

Dim qry = From er in Projects 
          Group er by er.Name Into Max(er.Date.Value.Weekday), Sum(er.Hours)

但这会给我 p1 上的“星期三”,因为它高于“星期二”。我真正想要的是“Tue”,因为它比“Wed”有更多的记录

4

1 回答 1

2

找到条目最多的一天的技巧是按天分组,然后按每个组中的条目数对组进行排序,然后抓住第一个。

Dim query = Projects.GroupBy(Function(e) e.Name, Function(name, groupedEntries) New With { _
    .Name = name, _
    .TopDay = groupedEntries.GroupBy(Function(e) e.[Date].DayOfWeek).OrderByDescending(Function(g) g.Count()).First().Key, _
    .TotalHours = groupedEntries.Sum(Function(e) e.Hours) _
})
于 2013-03-12T07:22:56.923 回答