C# 如何在linq查询中将字符串正确转换为十进制?
在我的C#MVC 5应用程序中,我尝试使用linq查询将sql server表中的NVarChar列转换为十进制,并在视图中显示它 我知道,如果我要执行简单的SQL查询或使用webforms,我可以简单地执行以下操作:C# 如何在linq查询中将字符串正确转换为十进制?,c#,asp.net-mvc,linq,C#,Asp.net Mvc,Linq,在我的C#MVC 5应用程序中,我尝试使用linq查询将sql server表中的NVarChar列转换为十进制,并在视图中显示它 我知道,如果我要执行简单的SQL查询或使用webforms,我可以简单地执行以下操作: Select Sum(Cast(GrandTotal as decimal)) as GrandTotal From [myDB].[dbo].[Table] WHERE Year = '2017' 在林克我该怎么做?这就是我所尝试的: public ActionResult
Select Sum(Cast(GrandTotal as decimal)) as GrandTotal From [myDB].[dbo].[Table]
WHERE Year = '2017'
在林克我该怎么做?这就是我所尝试的:
public ActionResult Total()
{
var model = (from p in db.Table
where p.Year.Equals("2017")
select decimal.Parse(p.GrandTotal)).Sum();
return View(model);
}
错误如下:
LINQ to Entities无法识别“System.Decimal Parse(System.String)”方法,并且无法将此方法转换为存储表达式
不是重复的
标题类似,但解决方案不同。此外,我能够通过使用给出的解决方案来解决问题。您将此标记为的副本的问题没有明确的解决方案我不知道LINQ To Entities函数可以实现这一点。Id使用LINQ对对象执行此操作:
var result = (from p in db.Table where "2017" == p.Year select p).ToList();
var model = (from p in result select decimal.Parse(p.GranTotal)).Sum();
@加文:那是林克对对象。我刚才肯定是这么说的。哦,拜托@SamAxe,你不能因为他提供了你发布的确切答案而跟踪他。林克对实体是不可能的。为什么人们将数字/日期/时间数据存储为字符串而使事情变得更困难是一个疑问。人们必须问,为什么要将十进制值存储为数据库中的字符串。您应该使用类型为
money
的列。这是您可以更改的吗?当我尝试启动视图时,此解决方案会给我一个不同的错误传递到字典中的模型项的类型为“System.Decimal”,但此字典需要类型为
的模型项,这是一个完全不同的问题,应该作为不同的问题发布。但在提出问题之前,你应该先读一下这些词,让它们慢慢地融入其中。你会明白的,我解决了。谢谢你,伙计!