ado.net エンティティ フレームワークのエンティティへの linq で問題が発生しています。基本的に私がやっていることはこれです:
var results = (from c in companies
where c.Name.StartsWith(letter)
select c);
これは次のように SQL に変換されます。
WHERE (CAST(CHARINDEX(@p, [Extent1].[Name]) AS int)) = 1
これは問題ありませんが、私のテーブルには何百万ものレコードがあるため、実行が非常に遅くなります。生成する必要があるのは次のようなものです。
WHERE Name LIKE @p + '%'
私は高低を検索しており、ストアドプロシージャを使用するかエンティティSQLを使用する以外に解決策を見つけることができません...
linq を介してこれを行う方法はありますか? おそらく何らかの方法で linq をエンティティ linq プロバイダーに拡張するか、何らかの方法でコマンド ツリーまたは生成されたクエリを傍受しますか?