もこたんブログ@mocuLab(・ω・)

Programming & Designing

Linq to EntitiesでCastしたいが…

SQL Serverへ接続。
Linq to EntitiesでCastってできなかったっけ? 文字列(char)で数字が格納されているのを、C#からはintで比較したい。

Linq to Entities内でユーザー定義メソッドを使って変換しておこうとしたが ユーザー定義メソッドはSQLに変換できないため、Linq to Entitiesでは使えず以下のような例外が発生する。

「メソッド '〇〇〇(〇〇〇)' は LINQ to Entities では認識されないため、ストア式に変換できません。」

f:id:mocotanus:20180517123823p:plain

Convert.ToInt32を試す→だめだった…

↓その後...(´・ω・`)

結局見つけきれず、SQLを直接書いて(SQL ServerのCASTを使って)終わった…。。

StringBuilderでクエリを用意。。
WHERE ~
AND CAST(COLNAME AS INT) = @NUMBER

@NUMBERにはC#側からint型のパラメータをセット。

参考
CAST および CONVERT (Transact-SQL)
https://docs.microsoft.com/ja-jp/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017