私はこの質問を死ぬまで研究しました。int または decimal を string に変換する方法を誰もが知りたがっていますが、EF で逆のことを行う例は見つかりません。
私のデータ ソースには、データベース内に varchar 型の order total_amt 列があります。理由は、ソース データが暗号化されているためです。デクリプターはその場でそうします。これを書き直して一時テーブルに復号化し、それらの結果を適切に型指定されたテーブルに挿入することもできますが、現在およびアプリを拡張する際の DB 更新中の両方で、より多くの作業を割り当てる必要があります。
列をキャストできるようにしたいのですが、Linq と EF でそれを行う方法がわかりません。
public ActionResult Orders_Read([DataSourceRequest]DataSourceRequest request) {
var db = new Ecommerce_DecryptedEntities();
var orders = from s in db.Orders
where s.Order_Complete == true
select new {
s.Order_Id,
s.MySEL_Name,
s.MySEL_EMail,
s.MySEL_Bus_Name,
s.Total_Amt,
s.Order_Complete_DateTime
};
DataSourceResult result = orders.ToDataSourceResult(request);
return Json(result, JsonRequestBehavior.AllowGet);
}
注: 結果は iQueryable である必要があります。DBからすべてのデータを取得するため、これをToListしたくありません。これは、ページング、ソート、およびその他のパラメーターを渡す Telerik KendoUI Grid にバインドされています (上記のページング、ソートなどのデータを保持する、渡されたリクエストを使用して KendoUI の ToDataSourceResult にキャストされていることに注意してください)。