2014-06-18 4 views

Répondre

0
var q = from n in table 
     group n by n.Senderinto g 
     select g.OrderByDescending(t=>t.Timestamp).FirstOrDefault(); 
+0

pourquoi OrderBy et non Max (IEnumerable , Func ) –

1

Vous devez regrouper par Sender puis obtenir le maximum Horodatage de chaque groupe comme:

var query = list.GroupBy(r => r.Sender) 
       .Select(grp => new 
       { 
        Sender = grp.Key, 
        RecentTimeStamp = grp.Max(r => r.Timestamp) 
       }); 

Ou vous pouvez trier les TimeStamp dans le groupe par ordre décroissant et obtenir le premier élément comme:

var query = list.GroupBy(r => r.Sender) 
       .Select(grp => new 
       { 
        Sender = grp.Key, 
        RecentTimeStamp = grp.OrderByDescending(r => r.Timestamp).FirstOrDefault() 
       }); 
Questions connexes