Для этого вы должны использовать перегрузку Intersect
, которая принимает IEqualityComparer<>
class ProductFilterProductIdEqualityComparer : IEqualityComparer<ProductFilter>
{
public bool Equals(ProductFilter x, ProductFilter y)
{
if (ReferenceEquals(x, y))
return true;
if (ReferenceEquals(x, null))
return false;
if (ReferenceEquals(y, null))
return false;
return x.ProductId == y.ProductId;
}
public int GetHashCode(ProductFilter obj) => obj.ProductId;
}
var productFilterProductIdEqualityComparer = new ProductFilterProductIdEqualityComparer();
var intersection = groupList
.Aggregate((previousList, nextList) =>
previousList.Intersect(nextList, productFilterProductIdEqualityComparer)
.ToList());
Примечание: Имейте в виду, что когда два ProductFilter
имеют одинаковое ProductId
, но отличаются от других свойств, вы получите только первое в intersection