最近3个发送了最新消息,同时仅保存最近3条最新消息?

时间:2011-09-19 19:46:43

标签: c# .net-4.0

目前我有一个简单的用户类,如下所示:

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 个答案:

答案 0 :(得分: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();
}