一个关于linqtosql Group后的数据在和动态list join的问题
我有一张表AttRecordsAttTime(datetime) Emp(nvarchar) Dept(nvarchar)
2008-08-02 6:45 zhangsan A
2008-08-02 18:20 zhangsan A
2008-08-02 11:22 zhangsan A
2008-08-02 18:20 zhangsan A
2008-08-08 7:15 zhangsan A
2008-08-08 19:12 zhangsan A
2008-08-01 6:41 ww A
2008-08-01 8:41 ww A
2008-08-01 17:20 ww A
2008-08-06 7:11 ww A
2008-08-06 18:12 ww A
2008-08-04 8:13 lisi B
想要得到数据如下:
即得到指定Dept(A)下的所有Emp(zhangsan,ww)的AttTime记录,并按每个人分组显示,求出每个人每天的最大时间和最小时间,
没有记录的日期用空的补全。
AttDate minAttTime maxAttTime Emp Dept
2008-08-02 6:45 18:20 zhangsan A
2008-08-03 null null zhangsan A
2008-08-04 null null zhangsan A
2008-08-05 null null zhangsan A
2008-08-06 null null zhangsan A
2008-08-07 null null zhangsan A
2008-08-08 7:15 19:12 zhangsan A
2008-08-01 6:41 17:20 ww A
2008-08-02 null null ww A
2008-08-03 null null ww A
2008-08-04 null null ww A
2008-08-05 null null ww A
2008-08-06 7:11 18:12 ww A
我需要使用linqtosql直接对AttRecords进行操作,下面我只实现了分组统计,我不知如何才能将空日期的部分join进去?
AttDemoDataContext adc = new AttDemoDataContext();
var attData = from a in adc.AttRecords
group a by
new { a.Dept, a.Emp, Convert.ToDateTime(a.AttTime).Date } into g
where g.Key.Dept == 'A'
select new
{
AttDate = g.Key.Date,
minAttTime = g.Min(c => c.AttTime),
maxAttTime = g.Max(c => c.AttTime),
Emp = g.Key.Emp,
Dept = g.Key.Dept
};
foreach (var item in attData)
{
Console.WriteLine(Convert.ToDateTime(item.AttDate).Date.ToShortDateString() + "\t" +
Convert.ToDateTime(item.minAttTime).TimeOfDay + "\t" +
Convert.ToDateTime(item.maxAttTime).TimeOfDay + "\t" +
item.Emp + "\t" + item.Dept);
}
Console.ReadLine();
8/1/2008 06:41:00 17:20:00 ww A
8/6/2008 07:11:00 18:12:00 ww A
8/2/2008 06:45:00 18:20:00 zhangsan A
8/8/2008 07:15:00 19:12:00 zhangsan A --------------------编程问答-------------------- up --------------------编程问答-------------------- into g.DefaultIfEmpty(new AttRecords()) --------------------编程问答--------------------
这样不行吧 --------------------编程问答-------------------- 你是不是要吧最小时间和最大时间中间的日期补上去?如果是这样的话,个人感觉应该先弄个全月份的虚拟集合,然后再left join 或 right join连接起来。 --------------------编程问答--------------------
是的
我是想把这个集合也写到这个查询里
不想单独弄个list
补充:.NET技术 , LINQ