検索文字列でリストをフィルタリングしようとしています。青いメモのドキュメントには次のように書かれています。
Contains
。IEnumerable
の.NETFramework実装を提供します Contains
ToUpper
大文字と小文字を区別しない明示的な呼び出しを行うために使用すると、パフォーマンスが低下するため、使用しないでください。私のフィルタリングは次のとおりです。
IQueryable<ApplicationUser> customers =
from u in _context.Users
where (u.Customer != null && u.IsActive)
select u;
if (!string.IsNullOrEmpty(searchString))
{
customers = customers.Where(s => s.Email.Contains(searchString));
}
ただし、このソリューションIQueryable
では大文字と小文字が区別され、その理由がよくわかりません。を使用しているため、データベースプロバイダーの実装を使用する必要があります。デフォルトでは、大文字と小文字は区別されません。
私はEFCore 2を使用しており、現在はローカルのMSSQLLocalDBを実行しています。
EF Coreのバージョン2.1以降、HasConversion()を使用できます。ただし、データベース内の情報は小文字で保存されます。
builder.Property(it => it.Email).HasConversion(v => v.ToLowerInvariant(), v => v);
私は同様の問題を解決しました。この変更により、私のすべての問題が解決しました。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加