2016-07-29 29 views
-2

我有一張表格,其中的產品可能位於不同的位置以供返工任務使用,但我只需根據產品選擇最近的產品。如何使用linqq按日期從表中選擇

我有如下表:

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查詢呢?

+0

我已通過用組試過,但不起作用,因爲所有其他列可以不同,如果它只是標記列和日期,它將與選擇m一起工作斧頭(日期),來自tbEquipment組的標籤由標籤 –

回答

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(); 
+0

我需要得到更高日期的OON的位置和ID,以便按標籤分組不會起作用 –

+0

@MarcBarros答案已更新。 – NEER

+0

非常感謝。如果我的團隊需要包括任務? –

相關問題