我有一个名为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 of Date的最大值。周末部分.. 到目前为止,我尝试过这样的事情。
Dim qry = From er in Projects
Group er by er.Name Into Max(er.Date.Value.Weekday), Sum(er.Hours)
但这会让我在p1上获得“Wed”,因为它高于“Tue”。我真正想要的是“星期二”,因为它有更多的记录“Wed”
答案 0 :(得分: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) _
})