2011-09-19 22 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的優點是你實際上不必每次都複製一個數組... –

相關問題