LINQ to Entities字符串到十进制的一列
我已经研究了这个问题到死。每个人和他们的兄弟都想知道如何将int或decimal转换为字符串,但是我找不到任何与EF做相反的例子。LINQ to Entities字符串到十进制的一列
我的数据源在varchar类型的数据库中有一个order total_amt列。原因是因为源数据被加密。解密器的确如此。我可以重写那个解密到一个临时表,然后将这些结果插入到一个正确类型的表中,但是现在和在数据库更新期间,这需要分配更多的工作,因为我们展开了应用程序。
我很想能够投出的列,但我不知道如何与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。我真的不想ToList,因为它会从数据库中提取所有数据。这是绑定到一个Telerik KendoUI网格,该网格正在传递分页,排序和其他参数(注意它正在使用传入的请求将其转换为KendoUI的ToDataSourceResult,其中包含上述提及的分页,排序等数据。
您有数据到达一个List<Order>
第一之后,你可以施放任何想要
var orders =
from s in
((from o in db.Orders
where o.Order_Complete
select o).ToList())
select new {
s.Order_Id,
s.MySEL_Name,
s.MySEL_EMail,
s.MySEL_Bus_Name,
Double.Parse(s.Total_Amt),
s.Order_Complete_DateTime
};
我认为,EMS的方式会看在你的代码要好得多。)
var orders =
db.Orders.Where(s => s.Order_Complete).ToList().Select(s => new { /*...*/ }
铸造ToList()
后ÿ您已经获得了基于数据对象并可以对其进行修改,如果您不能使用Double.Parse
,因为EF试图找到例如数据库上的存储过程将引发异常。
我想到了,问题在于它会从表中获取所有数据。这被绑定到一个Telerik Kendo UI网格,该网格正在传递排序,分组和分页数据,并且需要iQueryable。我将编辑这个问题来详细说明。 – 2013-03-05 16:29:35
.AsQueryable():我没有看到一种方法来实现你的目标,就像你想要的一样......但无论如何,网格也会从数据库中获取数据 – 2013-03-05 22:28:11
您是否尝试过模型定义的功能?
<Function Name="ConvertToDecimal" ReturnType="Edm.Decimal">
<Parameter Name="myStr" Type="Edm.String" />
<DefiningExpression>
CAST(myStr AS Edm.Decimal(12, 2))
</DefiningExpression>
</Function>
[问题与LINQ的转换INT为字符串的实体(可能重复http://*.com/questions/1066760/problem-with-converting-int -to-string-in-linq-to-entities) – Win 2013-03-05 16:15:10
Total_Amt是否需要在某段时间内是int或小数?你多久使用一次? – 2013-03-05 16:16:32
@Win,这是一个否定的,因为我明确表示我想做相反的事情,将字符串转换为另一种格式,在这种情况下是十进制。 – 2013-03-05 16:22:17