我正在通过可观察对象接收一系列对象。根据其 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);