如何在我的linq查询中将字符串正确转换为十进制?

时间:2016-10-19 20:01:04

标签: 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'

我如何在linq中执行此操作?这就是我试过的:

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)'方法,此方法无法转换为商店表达式

不重复

标题类似,但解决方案不同。此外,我能够通过使用给出的解决方案来解决问题。您将此标记为副本的问题没有明确的解决方案

1 个答案:

答案 0 :(得分:1)

我不知道可以执行此操作的LINQ-To-Entities功能。我是使用LINQ-To-Objects来做的:

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();