0

Observable を通じてさまざまなオブジェクトを受け取っています。入ってくるオブジェクトは PartNumber プロパティに基づいて重複している可能性があるため、リストに重複がないことを確認する必要があります。何百万もの部品番号を取得しているため、リスト内のクエリはコストがかかるため、頻繁にクエリを実行したくありません。

これがOnNextの実装です

void OnNext(Product p)
{
 if (!products.Any(x => x.PartNumber.Equals(p))) /// Very costly query
 {
    products.Add(p);
 {
}

受け取ったオブジェクトごとに、コストのかかるクエリを実行して、重複を追加していないことを確認する必要があります...馬力を節約する他の方法はありますか?

4

1 に答える 1

3

独自の を使用するかHashSet<T>、RxDistinct演算子 (内部で HashSet を使用) を使用します。

productSource.Distinct(part => part.PartNumber).Subscribe(OnNext);
于 2013-09-18T11:29:54.680 に答える