我正在为票务系统制作时间报告。在子表上跟踪每个员工的每个票务时间。
原始表格数据
我该如何退回一个星期的时间,这样,如果您多次处理票证,则不会返回多条记录?凭票分组吗?我无法将所有的行合并到一条记录中。
Dim Today As DateTime = DateTime.Today
Dim startOfWeek As DateTime = Today.AddDays(-1 * Today.DayOfWeek)
Dim endOfWeek As DateTime = startOfWeek.AddDays(7)
Dim RepeaterMyTimeDataThisWeek = (From t In db.Ticket_Times
Where t.EmployeeID= EmployeeID AndAlso t.Date >= startOfWeek AndAlso t.Date < endOfWeek).ToArray()
缺少用于分组和组织数据的代码。
Dim results = RepeaterMyTimeDataThisWeek.GroupBy(Function(z) z.TicketID).[Select](Function(s) New With {
.Ticket = s.First().Ticket,
.Monday = s.Where(Function(c) c.Date.DayOfWeek = DayOfWeek.Monday).Sum(Function(c) c.Hours),
.Tuesday = s.Where(Function(c) c.Date.DayOfWeek = DayOfWeek.Tuesday).Sum(Function(c) c.Hours),
.Wednesday = s.Where(Function(c) c.Date.DayOfWeek = DayOfWeek.Wednesday).Sum(Function(c) c.Hours),
.Thursday = s.Where(Function(c) c.Date.DayOfWeek = DayOfWeek.Thursday).Sum(Function(c) c.Hours),
.Friday = s.Where(Function(c) c.Date.DayOfWeek = DayOfWeek.Friday).Sum(Function(c) c.Hours),
.Saturday = s.Where(Function(c) c.Date.DayOfWeek = DayOfWeek.Saturday).Sum(Function(c) c.Hours),
.Sunday = s.Where(Function(c) c.Date.DayOfWeek = DayOfWeek.Sunday).Sum(Function(c) c.Hours)
})
答案 0 :(得分:1)
尝试使用后跟Sum的GroupBy。 C#中的一个示例。
var x = new List<TicketTimes> {
new TicketTimes{Ticket = "1284", Monday=1, Tuesday=0},
new TicketTimes{Ticket = "1284", Monday=0.5f, Tuesday=1},
new TicketTimes{Ticket = "251", Monday=1, Tuesday=0},
new TicketTimes{Ticket = "6", Monday=1, Tuesday=0},
};
var results = x.GroupBy(z => z.Ticket)
.Select(s => new TicketTimes {
Ticket = s.First().Ticket,
Monday = s.Sum(c => c.Monday),
Tuesday = s.Sum(c => c.Tuesday),
});
class TicketTimes
{
public string Ticket {get; set;}
public float Monday {get; set;}
public float Tuesday {get; set;}
}