我不知道如何写标题,但无论如何。我有一个方法,可以随机向我发送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);
答案 1 :(得分:0)
你的问题很模糊,所以很难给出具体的答案。但也许一些想法可能对你有帮助。
您收到的每封邮件都会获得某种独特的ID。在您的情况下,此ID可以从发件人和收到的邮件的时间戳派生。也许你应该写一个IEqualityComparer
并考虑这个GetHashCode
algorithm来实现。然后你只需将所有邮件放入new HashSet<Email>(MyEqualityComparer)
,当你的方法被调用时,你可以在那里检查你是否已经计算了这个消息。
如果您不想将所有邮件存储在HashSet<T>
内(可能是为了改善内存占用量),您可以调用MyMailComparer.GetHashCode(email)
并将所有结果放入HashSet<int>
并丢弃邮件之后。但请注意,这可能会丢弃一条新消息,因为两条不同的消息可能会产生相同的哈希码,因此在这种情况下需要Equals()
方法检查两条消息是否真的相等,但这样就有必要将邮件保存在内存中。