0

タイトルの書き方がわかりませんでしたが、とりあえず。10 秒から 60 秒の間で (メールの) オブジェクトをランダムに送信する方法があります。ここで、getNewMessages という新しいメソッドを作成する必要があるという問題があります。このメソッドは、メソッドが最後に呼び出されてから新しい電子メールのリストを返します。

したがって、このメソッドを初めて呼び出すと、すべての新しい電子メールが取得されますが (この部分は問題ではありません)、2 回目に呼び出すと、古い電子メールがリストから削除され、新しい電子メールがリストに表示されます。リスト、最後にメソッドを呼び出したときから。

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を作成して検討する必要があります。次に、すべてのメールを a に入れるだけで、メソッドが呼び出されたときに、このメッセージを既に計算しているかどうかを確認できます。GetHashCodenew HashSet<Email>(MyEqualityComparer)

すべてのメールを に保存したくない場合HashSet<T>(おそらくメモリ フットプリントを改善するため)、 を呼び出してMyMailComparer.GetHashCode(email)、すべての結果を に格納しHashSet<int>、後でメールを破棄することができます。ただし、これにより新しいメッセージがドロップされる可能性があるため、2 つの異なるメッセージが同じハッシュ コードを生成する可能性があることに注意してください。したがって、Equals()この場合、両方のメッセージが本当に等しいかどうかをメソッドでチェックする必要があります。メールをメモリ内に保持するために必要です。

于 2012-11-06T08:51:01.917 に答える