C# 尝试将列表中的电子邮件与其他列表匹配时,无法创建类型的常量值

C# 尝试将列表中的电子邮件与其他列表匹配时,无法创建类型的常量值,c#,entity-framework,linq,lambda,C#,Entity Framework,Linq,Lambda,我试图找出我的数据库表中的列表中是否存在任何电子邮件 var existinctContactAccount = _dataContext.ContactAccounts .Include(ca => ca.Contact) .Include(ca => ca.ContactAccountTags.Select(cat => cat.ContactTag)) .Where(ca =>

我试图找出我的数据库表中的列表中是否存在任何电子邮件

   var existinctContactAccount = _dataContext.ContactAccounts
            .Include(ca => ca.Contact)
            .Include(ca => ca.ContactAccountTags.Select(cat => cat.ContactTag))
            .Where(ca =>
                ca.AccountId == accountId &&
                addCustomContactAccounts.Any(a => a.Email.Equals(ca.Contact.Email, StringComparison.OrdinalIgnoreCase))).ToList();

这就是我试图这么做的方式,但我得到的只是“无法创建类型的常量值”。

这无法工作,因为您尝试使用内存中的对象集合,并且无法将数据库中的一组数据与内存中的另一组数据连接起来。您需要首先从数据库中选择所有数据,然后从内存中选择。要做到这一点,请在db查询方法之后使用.ToList()

因此,请尝试以下方法:

var existinctContactAccount = _dataContext.ContactAccounts
            .Include(ca => ca.Contact)
            .Include(ca => ca.ContactAccountTags.Select(cat => cat.ContactTag))
            .ToList()
            .Where(ca =>
                ca.AccountId == accountId &&
                addCustomContactAccounts.Any(a => a.Email.Equals(ca.Contact.Email, StringComparison.OrdinalIgnoreCase))).ToList();

抛出的异常的
类型是什么?使用
addCustomContactAccounts.Contains(ca.Contact.Email)
您可以使用
IEqualityComparer
作为第二个参数来证明比较的合理性。但这将从该表中获取所有数据?那不可能是正确的方法吗?