从同一方法的最后一次运行以来获取所有最新更新的方法

时间:2012-11-06 08:29:50

标签: c# list

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

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

2 个答案:

答案 0 :(得分:0)

创建一个封闭实体,以便检索最后一个日期,然后使用Linq查询只获取新的

样品:

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

答案 1 :(得分:0)

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

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

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