2012年9月2日日曜日

[C#] LINQ to Entities で数値を文字列に変換

LINQ to Entities の話し。

LINQで数値の列を ToString() で文字列にしようとしたらプログラム実行時にエラーになった。


NotSupportedException: メソッド 'System.String ToString()' は LINQ to Entities では認識されないため、ストア式に変換できません。



ToString()をSQLに変換する方法知らないんです!できません!と言っているようだ。
知らないなら実行時じゃなくてもっと早い段階で教えてくださいっ、とか思うけどそれはまあ難しいのだろう。

じゃあどうすればいいのという事で調べてみると StringConvert というメソッドが見つかった。
http://msdn.microsoft.com/ja-jp/library/vstudio/dd466166


LINQで使ってみる


from hoge in db.HogeTable
select SqlFunctions.StringConvert((double?)hoge.Num)



StringConvertの部分がどのようなSQLに変換されているかLINQPadで確認。
データベースはSQLServer。


SELECT
STR( CAST( [Extent1].[Num] AS float)) AS [C1]
FROM [dbo].[HogeTable] AS [Extent1]



確かに文字列に変換しているようだった(当たり前)。

0 件のコメント:

コメントを投稿