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

本文关键字:列表 添加 对象 Any IEnumerable 唯一 情况下 | 更新日期: 2023-09-27 18:31:40

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

这是OnNext的实现

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

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

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

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

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