0

我不知道如何写标题,但无论如何。我有一种方法可以在 10 到 60 秒内随机向我发送(电子邮件)对象。现在的问题是我需要创建一个名为 getNewMessages 的新方法,该方法返回一个电子邮件列表,该列表从上次调用该方法时是新的。

因此,假设我第一次调用此方法时它会收到所有新电子邮件(这部分不是问题),但第二次调用它时,旧电子邮件应从列表中删除,新电子邮件应填写列表,自从我们上次调用该方法以来。

4

2 回答 2

0

制作一个封闭实体,以便检索最后一个日期,然后使用 Linq 查询仅获取新日期

样本:

var result = list.Where(v=>v.LastUpdate > _lastUpdate);
_lastUpdate = DateTime.Now;
result.ToList().ForEach(v=>v.LastUpdate = _lastUpdate);
于 2012-11-06T08:37:15.400 回答
0

你的问题很模糊,所以很难给出具体的答案。但也许一些想法可能会对你有所帮助。

您收到的每封邮件都会获得某种唯一的 ID。在您的情况下,此 id 可以从发件人和收到邮件的时间戳派生。也许你应该为你的实现编写一个IEqualityComparer并考虑这个GetHashCode算法。然后,您只需将所有邮件放入 a 中new HashSet<Email>(MyEqualityComparer),当您的方法被调用时,您可以简单地检查您是否已经计算了此消息。

如果您不喜欢将所有邮件存储在其中HashSet<T>(也许是为了改善内存占用),您可以调用MyMailComparer.GetHashCode(email)并将所有结果放入 aHashSet<int>中,然后丢弃邮件。但请注意,这可能会丢弃一条新消息,因为两条不同的消息可能会产生相同的哈希码,因此需要该Equals()方法在这种情况下检查两条消息是否真的相等,但这会使它有必要将邮件保存在内存中。

于 2012-11-06T08:51:01.917 回答