2009-06-13 7 views
39

LINQ to Entitiesを使用して検索ページを作成しようとしていますが、次のコードではl.t.eに関する実行時エラーが発生しています。 'Boolean StartsWith()を認識しません。コードはうまくコンパイルされます。 StartsWithをストアドプロシージャにフィルタリングするよりも、どうすればこの問題を回避できますか?LINQ to EntitiesとString.StartsWithの問題

return from dp in dents.DirectoryPersonEntrySet 
      where 
       ((dp.LastName.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) || 
       (dp.Department.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) || 
       dp.Extension.StartsWith(searchTerm, StringComparison.CurrentCultureIgnoreCase)) 
      select dp; 
+0

「次のコード」を投稿できますか?または、対象は完全なコードですか?あなたはStringを意味します.StartsをBooleanの代わりに使用します.StartsWith? –

+0

@Rutger、ありがとう、私は送信すると、コードを忘れてしまった。私も署名を修正しました。 – ProfK

+0

少なくとも6つの括弧が超過していますが、まだ関数プロトタイプとクラス定義がありません。 – em70

答えて

77

私はEFがStringComparisonパラメータを取るStartsWithのオーバーロードをサポートしていないと推測します。

それは、STARTSWITHをサポートする必要があり、EndsWithが含まれていますので、多分あなたは試すことができます:

dp.LastName.StartsWith(searchTerm) 

か:その後、

dp.LastName.ToLower().StartsWith(searchTerm) 

searchTermも小文字であることを確認してくださいを。

+2

死んだ権利、全体の文字列オプションthangはEFを投げます – ProfK

+0

ありがとうございました –

+1

は正しく推測されましたが、SQLに変換すると大文字と小文字を区別しません。 – marsze