質問: このESQL(Cast intからstringへ)を動的linq(このリンクから)で実行しようとすると ``` queryable.Where("CAST(PositionID AS Edm.String).Contains(@0)", paramsObj); //PositionID is Int32 ``` 例外を投げます ``` ')' or ',' expected ``` Entity Frameworkのバージョンは4.0です。この問題を解決する方法はありますか? 前もって感謝します、 ブライアン
回答: 内部関数呼び出し`as`使用することはできません、このようにコードを変更してみてください ``` queryable.Where("(PositionID.ToString().Contains(@0))", paramsObj); //PositionID is Int32 ``` **更新:** ほとんどの場合、あなたのケースではdbからカスタム関数を使用する必要があるかもしれません **更新2:** 動的LINQでesqlを使用することはできないと思います。これは、セルフルールによって文字列条件を解析するため、構文edslが動的LINQに対して間違っている可能性があるため、すべてのSQL構造がLINQ to Entitiesに実装されているわけではないため、 `like operator`使用する場合は、文字列でのみ機能する`Contains, StartsWith, EndsWith`関数を使用する必要があります したがって、これを解決するには、ストレージプロシージャと関数、eSQLコマンド、または未加工のSQLを使用できます。