2011-06-28 4 views
0

J'ai une liste de messages dans db comme ceci:groupe Linq par ordre et par date de création

FromLoginId, ToLoginId, Message, CreateDate

  1. 1, 2, "un certain message", 2/2/2010
  2. 1, 2, "une suite", 03/02/2010
  3. 4, 2 "4 de message", 04/03/2010
  4. 5, 2 "de 5 mess" , 1/3/2010
  5. 5, 2, "nouveau 5", 3/2/2011

Je dois avoir une liste de messages groupés par FromLoginId classés par createDate en commençant par le plus récent.

EDIT: Liste des messages avec le premier message le plus récent du groupe FromLoginId.

donc par exemple pour loginid 2 Je voudrais obtenir ce résultat:

FromLoginId, ToLoginId, Message, CreateDate

  1. 5, 2, "nouveaux 5", 3/2/2011
  2. 4, 2, "de 4 message", 3/4/2010
  3. 1, 2, "un plus", 2/3/2010

s'il vous plaît aider. merci

+0

Je pense que cela a été répondu ici: http://stackoverflow.com/questions/755132/how-do-i-order-a-group-result-in-linq – Ucodia

Répondre

1

Je pense que je l'ai compris. a l'air ok pour moi. quelqu'un peut-il vérifier s'il vous plaît?

list.GroupBy(x => x.FromLoginId) 
    .Select(x => x.OrderByDescending(y => y.CreateDate) 
    .FirstOrDefault()) 
    .OrderByDescending(x => x.CreateDate) 
0

Si vous regroupez par FromLoginId vous ne pouvez pas afficher les messages eux-mêmes, seulement le nombre d'entre eux, ou toute fonction d'agrégation qui pourrait vous intéresser.