あなたの質問は非常に漠然としているので、具体的な答えを出すのは非常に困難です。しかし、いくつかのアイデアが役立つかもしれません。
受信するすべてのメールには、何らかの一意の ID が付与されます。このIDは、あなたの場合、送信者と受信メールのタイムスタンプから派生する可能性があります。おそらく、実装のためにこのアルゴリズムIEqualityComparerを作成して検討する必要があります。次に、すべてのメールを a に入れるだけで、メソッドが呼び出されたときに、このメッセージを既に計算しているかどうかを確認できます。GetHashCodenew HashSet<Email>(MyEqualityComparer)
すべてのメールを に保存したくない場合HashSet<T>(おそらくメモリ フットプリントを改善するため)、 を呼び出してMyMailComparer.GetHashCode(email)、すべての結果を に格納しHashSet<int>、後でメールを破棄することができます。ただし、これにより新しいメッセージがドロップされる可能性があるため、2 つの異なるメッセージが同じハッシュ コードを生成する可能性があることに注意してください。したがって、Equals()この場合、両方のメッセージが本当に等しいかどうかをメソッドでチェックする必要があります。メールをメモリ内に保持するために必要です。