我觉得应该是一个相当简单的linq问题.我正在进行字符串比较,使用的Contains
是区分大小写的行为,我需要它不区分大小写.我知道这样做的正确方法是使用IndexOf
带StringComparison.OrdinalIgnoreCase
参数的方法重载.
问题是我挂起的对象IndexOf
(emailAddresses)是一个字符串的枚举,因此没有IndexOf
可用的.我也试过emailAddresses.Contains(x.Email, StringComparer.InvariantCultureIgnoreCase
但它抛出了这个错误:
LINQ to Entities无法识别方法'Boolean Contains [String](System.Collections.Generic.IEnumerable 1 [System.String],System.String,System.Collections.Generic.IEqualityComparer 1 [System.String])'方法
我如何重构这个以使该.Where(x => emailAddresses.Contains(x.Email)
部分不区分大小写?
public IList<string> FindInvalidEmails(UserContext userContext, IEnumerable<string> emailAddresses)
{
var validEmails = new List<string>();
emailAddresses.ForEachChunk(100, emailAddressesChunk =>
validEmails.AddRange(_enterpriseRepositoryFactory.GetMemberRepository(userContext.EnterpriseId).FindAll()
.Where(x => emailAddresses.Contains(x.Email) && !x.IsDeleted)
.Select(x => x.Email)
.ToList())
);
return emailAddresses.Except(validEmails).ToList();
}
Run Code Online (Sandbox Code Playgroud)