如何使用linqq从日期中选择表格

时间:2016-07-29 08:31:34

标签: sql linq

我有一个产品表可以在不同的位置提交给返工任务,但我只需要根据产品选择最新产品。

我有下表:

ID         Tag         Location         task            Date
1           1           A                T1              2016/06/01
2           1           B                T1              2016/07/01
3           2           A                T1              2016/06/01
4           2           A                T2              2016/07/01

选择带有最新日期的标签行,输出ID为2和ID 4的行。

对此有什么正确的linq查询?

1 个答案:

答案 0 :(得分:0)

首先group by代码,然后选择max日期

var result = db.Table.GroupBy(i => i.Tag).Select(i => new 
                                                {
                                                    Tag = i.Key,
                                                    Date = i.Max(t => t.Date)                   
                                                }).ToList();

更新1(评论1)

var result =  (from x in db.Table
              join z in (db.Table.GroupBy(i => i.Tag).Select(i => new 
                                                {
                                                    Tag = i.Key,
                                                    Date = i.Max(t => t.Date)                   
                                                })
                        ) on new { A = x.Tag, B = x.Date} equals { A = z.Tag, B = z.Date }
              select x).ToList();

更新2(评论2)

var result =  (from x in db.Table
              join z in (db.Table.GroupBy(i => new { i.Tag, i.Task }).Select(i => new 
                                                {                                                   
                                                    Tag = i.Key.Tag,
                                                    Task = i.Key.Task,
                                                    Date = i.Max(t => t.Date)                   
                                                })
                        ) on new { A = x.Tag, B = x.Date, C = x.Task} equals { A = z.Tag, B = z.Date, C = z.Task }
              select x).ToList();