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 件のコメント:
コメントを投稿