我有我想要的一个子集进行比较和判断来选择之外的所有子集的实体。使用的的IEqualityComparer与LINQ to实体除外条款
所以,我的查询看起来是这样的:它执行一些任务后
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到实体不承认 方法 “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])” 方法,和叔他的方法不能将 翻译成商店表达式。
感谢您的建议。在这种情况下,我们只谈不到100行,所以我认为第二种选择并不是那么糟糕。我可能会缓存结果只是为了加快未来的寻求。谢谢! – 2010-01-20 18:23:58