サブセットと比較して、サブセット以外のすべてを選択することを決定したいエンティティがあります。
したがって、私のクエリは次のようになります。
Products.Except(ProductsToRemove(), new ProductComparer())
このProductsToRemove()
メソッドはList<Product>
、いくつかのタスクを実行した後に を返します。したがって、最も単純な形式では上記のとおりです。
クラスは次のProductComparer()
ようになります。
public class ProductComparer : IEqualityComparer<Product>
{
public bool Equals(Product a, Product b)
{
if (ReferenceEquals(a, b)) return true;
if (ReferenceEquals(a, null) || ReferenceEquals(b, null))
return false;
return a.Id == b.Id;
}
public int GetHashCode(Product product)
{
if (ReferenceEquals(product, null)) return 0;
var hashProductId = product.Id.GetHashCode();
return hashProductId;
}
}
ただし、次の例外を継続的に受け取ります。
LINQ to Entities はメソッド 'System.Linq.IQueryable
1[UnitedOne.Data.Sql.Product] Except[Product](System.Linq.IQueryable
1[UnitedOne.Data.Sql.Product], System.Collections.Generic.IEnumerable1[UnitedOne.Data.Sql.Product], System.Collections.Generic.IEqualityComparer
1[UnitedOne.Data.Sql.Product])' メソッドを認識せず、このメソッドは認識できませんストア表現に変換されます。