我有以下列表

static List<MessageDetail> CurrentMessage = new List<MessageDetail>();


动态地,分配给该列表的值例如:

CurrentMessage.Add(new MessageDetail { UserName = 123,GroupName = somegrp, Message = somemsg });


在这里,我要记录最近5条记录。

// this returns first 5 result, dont want to user orderby clause either
CurrentMessagesForGroup = CurrentMessage
                          .Where(c => c.GroupName == groupName)
                          .Take(5).ToList();


有没有办法实现TakeLast()属性?或任何形式的帮助将不胜感激。谢谢你的时间。

最佳答案

使用skip

CurrentMessagesForGroup = CurrentMessage
                    .Where(c => c.GroupName == groupName).Skip(Math.Max(0, CurrentMessage.Count() - 5)).ToList();


编辑:我也发现我认为它更易于使用(MoreLinq):

using MoreLinq;

var CurrentMessagesForGroup2 = CurrentMessage.TakeLast(5);

关于c# - 如何从列表中获取最新记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38587958/

10-16 21:14