Linq group by and order by create date
I have a list of messages in db like so:
FromLoginId, ToLoginId, Message, CreateDate
- 1, 2, "some message", 2/2/2010
- 1, 2, "one more", 2/3/2010
- 4, 2, "from 4 message", 3/4/2010
- 5, 2, "from 5 mess", 1/3/2010
- 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
- 5, 2, "newer 5", 3/2/2011
- 4, 2, "from 4 message", 3/4/2010
- 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.
精彩评论