具有 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 替换 $ 并计算总和。