我有tbl_purchase
表,其中有order_date - DateTime
,price - nvarchar
,pid - int
等字段,要求是显示图表中每年的总价格。所以为了得到价格,我决定去SumAsync
。但这里的问题是price
字段将会被存储,并附加$
,如$12,234.03
,$4,453.23
等,并且如上所述它是nvarchar
字段。我试图分裂SumAsync()
内的值,但得到编译错误。关于如何使用这个完全空白?任何解决方法拆分$
并总结值?以下是我的尝试。SumAsync()与nvarchar值
ChartData.cs
public class ChartData
{
public string period {get;set;}
public int purchase {get;set;}
public string purchaseAmount {get;set;}
}
控制方法
var areaModel = new List<ChartData>();
var yearList = new string[]{'2015','2016'};
foreach (var year in yearList)
{
int yr=Convert.ToInt32(year);
var model = new ChartData
{
period = year,
purchaseAmount=await context.tbl_purchases.Where(x=>x.order_date.Year == yr).SumAsync(x=>(long)x.price.Split('$')[1]); //shows complie error. Its expecting `long` but the conversion doesn't happen well here.
};
areaModel.Add(model);
}
为什么价格存储为'varchar'而不是'money'或'decimal'?这对我来说似乎很奇怪。无论如何,像下面的东西应该工作'x => Convert.ToDecimal(Regex.Replace(x.price,“[^ 0-9。]”,“”));'? – mituw16
@ mituw16 ..让我尝试一次.. :) –