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 回答