我有一个实体,我想与一个子集进行比较,并决定选择除子集之外的所有实体。
因此,我的查询如下所示:
Products.Except(ProductsToRemove(), new ProductComparer())
该ProductsToRemove()
方法List<Product>
在执行一些任务后返回 a 。所以最简单的形式就是上面的。
该类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])' 方法,并且此方法不能被翻译成商店表达式。