我有什麼似乎應該是一個相當簡單的LINQ問題。我正在做一個字符串比較使用Contains
行爲敏感,我需要它是不區分大小寫的。我知道正確的方法是使用IndexOf
方法重載,該參數取值爲StringComparison.OrdinalIgnoreCase
。LINQ - 重構。含IEnumerable <string>的比較區分大小寫
問題是,我掛在(emailAddresses)IndexOf
對象是一個字符串的枚舉,因此沒有IndexOf
可用。我也試過emailAddresses.Contains(x.Email, StringComparer.InvariantCultureIgnoreCase
但它拋出這個錯誤:
LINQ to Entities does not recognize the method 'Boolean Contains[String](System.Collections.Generic.IEnumerable 1[System.String], System.String, System.Collections.Generic.IEqualityComparer 1[System.String])' method
如何重構這使得.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();
}
你應該更清楚你的IEnumerable''來自實體弗拉我的工作,否則你會得到很多答案,實際上不工作。 –