.net LINQ to实体无法识别方法';布尔包含

.net LINQ to实体无法识别方法';布尔包含,.net,c#-4.0,iequalitycomparer,.net,C# 4.0,Iequalitycomparer,我写了这样一份声明: if (!db.Customers.Contains<Customer>(customer,customerCompairor)) { db.Customers.Add(customer); } pmkeycompior正在实施IEqualityComparer 类pmkeycompior:IEqualityComparer { ..............

我写了这样一份声明:

if (!db.Customers.Contains<Customer>(customer,customerCompairor))
                {
                    db.Customers.Add(customer);
                }
pmkeycompior正在实施
IEqualityComparer

类pmkeycompior:IEqualityComparer
{
........................
.............................
}
客户的扩展方法包含(返回bool),因为它是
DbSet


那么我错在哪里呢?

Linq to Entities查询被转换为SQL,但无法将自定义比较器的逻辑转换为SQL,因此必须在内存中进行比较。你可以这样做:

if (!db.Customers.AsEnumerable().Contains<Customer>(customer,customerCompairor))

如果(!db.Customers.Any(c=>match condition))
class PMKeyCompairor:IEqualityComparer<Customer>
    {
            ........................
            .............................
     }
if (!db.Customers.AsEnumerable().Contains<Customer>(customer,customerCompairor))
if (!db.Customers.Any(c => c.Id == customer.Id && c.Name == customer.Name))