开发者

Linq group by and order by create date

I have a list of messages in db like so:

FromLoginId, ToLoginId, Message, CreateDate

  1. 1, 2, "some message", 2/2/2010
  2. 1, 2, "one more", 2/3/2010
  3. 4, 2, "from 4 message", 3/4/2010
  4. 5, 2, "from 5 mess", 1/3/2010
  5. 5, 2, "newer 5", 3/2/2011

I need to have a list of messages grouped by FromLoginId ordered by createDate starting from the newest first.

EDIT: List of messages with the first newest message from the FromLoginId group.

so for example for loginid 2 I would get this result:

Fr开发者_开发百科omLoginId, ToLoginId, Message, CreateDate

  1. 5, 2, "newer 5", 3/2/2011
  2. 4, 2, "from 4 message", 3/4/2010
  3. 1, 2, "one more", 2/3/2010

please help. thanks


I think i figured it out. looks ok to me. can anyone please check it?

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


If you group by FromLoginId you can't display the messages themselves, only the count of them, or any aggregate function that might interest you.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜