2012-11-06 35 views
0

我不確定如何編寫標題,但無論如何。我有一種方法可以隨意地發送10到60秒內的對象(電子郵件)。現在是我需要創建一個稱爲getNewMessages的新方法的問題,該方法返回上次調用方法時爲NEW的電子郵件列表。從最後一次使用同一方法後得到所有最新更新的方法

因此,讓我們說我第一次調用這個方法時,它會得到所有新的電子郵件(這部分不是問題),但第二次我打電話時,舊電子郵件應該從列表中刪除,新的電子郵件自上次我們稱之爲方法以來,應該填寫清單。

+0

什麼是你的情況下的'電子郵件'對象?你如何儲存它們?向我們顯示'你的方法'的代碼 –

回答

0

做一個封閉的實體,以便將檢索,然後使用LINQ查詢得到的最後日期只有換新

樣品:

var result = list.Where(v=>v.LastUpdate > _lastUpdate); 
_lastUpdate = DateTime.Now; 
result.ToList().ForEach(v=>v.LastUpdate = _lastUpdate); 
0

你的問題是相當模糊,所以還是比較難給出一個具體的答案。但也許有些想法可能會幫助你。

您收到的每封郵件都會獲得某種唯一的ID。這個ID可能來自發件人和收到的郵件的時間戳。也許你應該寫一個IEqualityComparer並考慮這個GetHashCode algorithm爲你的實現。然後,您只需將所有郵件放入new HashSet<Email>(MyEqualityComparer)中,當您的方法被調用時,您可以簡單地在那裏查看是否已經計算了此消息。

如果你不喜歡存儲HashSet<T>內的所有郵件(也許,以提高內存佔用),你可以調用MyMailComparer.GetHashCode(email),並把所有的結果爲HashSet<int>事後丟棄郵件。但請注意,這可能會丟棄一條新消息,因爲有可能兩條不同的消息可能產生相同的散列碼,因此需要使用Equals()方法來檢查這種情況,如果兩個消息都是真的相等的話,但這會使有必要將郵件保存在內存中。

相關問題