###前提・実現したいこと
LINQ中のorderbyで、文字列が1,10,11,・・・,2,20,・・・と並び替えられてしまうため、数値にキャストしたい。
LINQ中でSQLに数値型に変換できるキャスト方法。
###発生している問題・エラーメッセージ
型 'System.NotSupportedException' の例外が EntityFramework.SqlServer.dll で発生しましたが、ユーザー コード内ではハンドルされませんでした 追加情報:メソッド 'Int16 ToInt16(System.String)' は LINQ to Entities では認識されないため、ストア式に変換できません。
###該当のソースコード
C#
1orderby Convert.ToInt16(A.AAA)
###試したこと
使えそうなキャストは一通り試しました
上記のエラー:Convaert.ToInt16(A.AAA)、int.Parse(A.AAA)、Dictionary(A.AAA)
それ以前にエラー:checked((int)A.AAA)
###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報
LINQで変換できる文字列型には、SqlFunctions.StringConvertがあるのですが、SqlFunctionsの中にはIntConvertはありませんでした。
Dicitonaryは、string同士("1"→"01")もstringをstringに変換できないといわれました。
上記のように、OrderByで数値のように並び替えできるのであれば、キャストはできなくてもokです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/22 10:28
2016/06/23 04:47 編集
2016/06/23 06:33
2016/06/23 07:08 編集
2016/06/23 07:15