如何在不做昂贵的事情的情况下将唯一对象添加到列表中!IEnumerable.Any().



我正在通过可观察对象接收一系列对象。根据其 PartNumber 属性,传入的对象可能是重复的,因此我必须检查以确保列表中没有重复项。我获得了数百万个零件号,因此列表中的任何查询都会很昂贵,因此我们不想运行频繁的查询。

这是OnNext的实现

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

对于我收到的每个对象,我都必须运行昂贵的查询以确保我没有添加重复项......有没有其他方法可以节省马力?

要么使用你自己的HashSet<T>,要么只使用 Rx Distinct 运算符(在内部使用 HashSet):

productSource.Distinct(part => part.PartNumber).Subscribe(OnNext);

相关内容

  • 没有找到相关文章

最新更新