具有 nvarchar 值的 SumAsync()
SumAsync() with nvarchar value
我有tbl_purchase
table里面有order_date - DateTime
,price - nvarchar
,pid - int
等字段,要求是显示总价到图表中的每一年。所以为了得到价格,我决定选择 SumAsync
。但这里的问题是 price
字段将附加 $
存储,如 ,234.03
、,453.23
等,并且如前所述,它是一个 nvarchar
字段。我尝试拆分 SumAsync()
内的值,但出现编译错误。对如何使用这个完全空白?拆分 $
并汇总值的任何解决方法?下面是我试过的。
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);
}
如果计算价格格式并且始终相同,您可以按照以下步骤计算价格:
var price = new List<string> { ",000.99",".99",",000.88"};
var sum = price.AsEnumerAble().Sum(x => double.Parse(x.Replace("$", "0")));
我只是用 0
替换 $
并计算总和。
我有tbl_purchase
table里面有order_date - DateTime
,price - nvarchar
,pid - int
等字段,要求是显示总价到图表中的每一年。所以为了得到价格,我决定选择 SumAsync
。但这里的问题是 price
字段将附加 $
存储,如 ,234.03
、,453.23
等,并且如前所述,它是一个 nvarchar
字段。我尝试拆分 SumAsync()
内的值,但出现编译错误。对如何使用这个完全空白?拆分 $
并汇总值的任何解决方法?下面是我试过的。
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);
}
如果计算价格格式并且始终相同,您可以按照以下步骤计算价格:
var price = new List<string> { ",000.99",".99",",000.88"};
var sum = price.AsEnumerAble().Sum(x => double.Parse(x.Replace("$", "0")));
我只是用 0
替换 $
并计算总和。