2016-06-07 103 views
-1

我有以下结果集。如何获取符合条件的最新历史记录:Status ='A'in linq?分组是在实体标识进行,记录将在历史记录标识降序排序在linq获取最新记录

History ID Entity ID Status 
2969  6957  I 
2968  6957  A 
2967  6957  A 
2303  6957  I 
1000  6958  A 
55   6959  A 
50   6959  I 
45   6960  I 
40   6960  A 

结果应该给我

History ID Entity ID Status 
1000  6958  A 
55   6959  A 
+0

为什么你只希望收到两个结果?您似乎有5条记录符合您提供的“状态='A'”限制。你是否还有另一个限制? –

+0

Hi Rion,历史ID为2969的实体标识为6957的最新历史记录具有状态I,因此不应选择此记录。实体ID 6960 –

+0

的情况类似,这很有帮助。 [D斯坦利的回应](http://stackoverflow.com/a/37687465/557445)应该完成你正在寻找的东西。我只是想要一些额外的澄清,因为它不清楚。 –

回答

0

第一组由实体,并得到各组的“最新”的记载。最后检查状态A

histories.GroupBy(h => h.EntityId) 
     .Select(g => g.OrderByDescending(h => h.HistoryID) 
         .First()) 
     .Where(h => h.Status == "A"); 
+0

工作!谢谢。 –