「LINQtoEntities」クエリを実行するC#アプリケーションがあります。
接続しているデータベースはMSSQL2012です。データベース照合は「ヘブライ語CI」です。
それでも、次のようなクエリを実行すると、次のようになります。
return users.Where(us => us.FirstName.Contains("joh"));
'John'を持つ'FirstName'のレコードはフェッチされません。名が「john」のもののみ。
これはSQLServer側でデータベースの照合によって決定されると思いましたが、明らかに私は間違っています...
また、「FirstName」列の照合を確認しましたが、「DatabaseDefault」に設定されています。
ここで何が欠けていますか?
。
[ アップデート ]
いくつかのコメントを読んだ後-私は明確にする必要があります:
ローカルクエリではなく、LINQ-TO-ENTITIESを使用しています。
コードの完全な部分は次のとおりです。
public List<User> GetUsersByName(IMyDBEntities context, String filterBy)
{
IEnumerable<User> users = context.Users;
return users.Where(us => us.FirstName.Contains("filterBy")); // filterBy = 'joh'
}
完全な関数には、より多くのフィルターが含まれています(年齢によるフィルター、住所によるフィルターなど)。
これはすべてユーザーの「サーバー」リストで発生し、「。ToList()」を実行した場合にのみ、クエリは実際にすべてのフィルターで実行されます。