Linq group by和order by create date

时间:2011-06-28 07:03:15

标签: linq linq-to-sql

我在db中有一个消息列表,如下所示:

FromLoginId,ToLoginId,Message,CreateDate

  1. 1,2,“some message”,2010年2月2日
  2. 1,2,“one more”,2/3/2010
  3. 4,2,“来自4条消息”,2010年3月4日
  4. 5,2,“5 mess”,1/3/2010
  5. 5,2,“newer 5”,2011年3月2日
  6. 我需要有一个按照FromLoginId分组的消息列表,这些消息由createDate从最新的第一个开始排序。

    编辑:包含来自FromLoginId组的第一条最新消息的消息列表。

    所以例如对于loginid 2我会得到这个结果:

    FromLoginId,ToLoginId,Message,CreateDate

    1. 5,2,“newer 5”,2011年3月2日
    2. 4,2,“来自4条消息”,2010年3月4日
    3. 1,2,“one more”,2/3/2010
    4. 请帮忙。 感谢

2 个答案:

答案 0 :(得分:1)

我想我明白了。看起来对我好有人可以检查吗?

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

答案 1 :(得分:0)

如果按FromLoginId分组,则无法显示消息本身,只能显示消息的数量,或者您可能感兴趣的任何聚合函数。