2011-09-19 56 views
2

目前我有一个用户一个简单的类,就像如下:最近3次发送的消息是最新的,而只保存最新的3条消息?

public class Users 
{ 
    public int ID { get; set; } 
    public string Name { get; set; } 
    public Groups Access { get; set; } 
    public IPAddress IP { get; set; } 
    public bool IsProtected { get; set; } 
    public bool IsInvisible { get; set; } 
} 

现在我想用来存储用户过去3发送的消息,并能比较,如果用户新的最后一条消息与任何先前的配衬3存储消息,如果不从列表中删除最旧的消息并添加新消息。

我是用字符串列表去最初想的简单了这样的事情:

bool msg_match = user.LastMessages.Any(x => String.Equals(x, msg, StringComparison.OrdinalIgnoreCase)); 
if (msg_match) 
{ 
    // punish user 
    user.LastMessages.Clear(); 
} 
else 
{ 
    // some way to remove oldest message and leave only the 3 newest messages 
    user.LastMessages.Add(mensagem); 
} 

以上的方法做工作,但我对如何挑选最旧的邮件被删除一个有点无能导致最后的最新消息,也不知道这种方法是否可以或者如果有更好的方法来解决这个问题?

PS:我的标题听起来相当混乱我想如果你对标题有更好的主意让我知道或改变它请。

+1

呃,哪里是LastMesssages定义? – Amy

+0

在公共列表 LastMessages =新列表();'就像我提到的,我想存储它为每个用户,所以我会存储它的用户类与给定的用户,它被创建。 – Prix

回答

2

您可以将邮件存储在LinkedList<string>中。这会让你很容易检查:

bool msg_match = user.LastMessages.Any(x => String.Equals(x, msg, StringComparison.OrdinalIgnoreCase)); 
if (msg_match) 
{ 
    // punish user 
    user.LastMessages.Clear(); 
} 
else 
{ 
    // some way to remove oldest message and leave only the 3 newest messages 
    user.LastMessages.AddFirst(mensagem); 
    if (user.LastMessages.Count > 3) 
     user.LastMessages.RemoveLast(); 
} 
+0

有趣的感谢材料现在检查它:)) – Prix

+0

@Prix:在这种情况下,LinkedList vs List的优点是你实际上不必每次都复制一个数组... –

相关问题