Linq to sql linq2sql lambda表达式中的字符串到int
我有一个lambda表达式,它返回表中两个字段的总和。问题是字段(ExpectedQuantity)是一个字符串,而QtyExpected是一个int。我本以为可以在lambda表达式中使用int.Parse,但我收到一个错误,说SQL无法翻译它Linq to sql linq2sql lambda表达式中的字符串到int,linq-to-sql,Linq To Sql,我有一个lambda表达式,它返回表中两个字段的总和。问题是字段(ExpectedQuantity)是一个字符串,而QtyExpected是一个int。我本以为可以在lambda表达式中使用int.Parse,但我收到一个错误,说SQL无法翻译它 return new QuantitiesDashboardAggregate() { QtyExpected = query.Sum(x => int.Parse(x.ExpectedQuantity))
return new QuantitiesDashboardAggregate()
{
QtyExpected = query.Sum(x => int.Parse(x.ExpectedQuantity)),
QtyReceived = query.Sum(x => int.Parse(x.ReceivedQuantity)),
};
有人能帮忙吗
下面是我如何定义查询变量的:
IQueryable<Data.POProduct> query = this.Database.POProducts;
// Apply date range
DateRange dateRange = new DateRange(args.DateRangeFilter, args.DateRangeCriteria);
switch (dateRange.DateRangeFilter)
{
case DateRangeFilter.Date:
query = query.Where(po => po.PurchaseOrder.FiscalDate.Date == dateRange.Date);
break;
case DateRangeFilter.FiscalWeek:
query = query.Where(po => (po.PurchaseOrder.FiscalDate.Year == dateRange.Year) &&
(po.PurchaseOrder.FiscalDate.WeekYear == dateRange.Number));
break;
case DateRangeFilter.FiscalPeriod:
query = query.Where(po => (po.PurchaseOrder.FiscalDate.Year == dateRange.Year) &&
(po.PurchaseOrder.FiscalDate.Period == dateRange.Number));
break;
case DateRangeFilter.FiscalYear:
query = query.Where(po => po.PurchaseOrder.FiscalDate.Year == dateRange.Year);
break;
default:
break;
}
IQueryable query=this.Database.POProducts;
//应用日期范围
DateRange DateRange=新的日期范围(args.DateRangeFilter,args.DateRangeCriteria);
开关(dateRange.DateRangeFilter)
{
案例日期范围筛选器。日期:
query=query.Where(po=>po.PurchaseOrder.FiscalDate.Date==dateRange.Date);
打破
案例DateRangeFilter.FiscalWeek:
query=query.Where(po=>(po.PurchaseOrder.FiscalDate.Year==dateRange.Year)&&
(po.PurchaseOrder.FiscalDate.WeekYear==dateRange.Number));
打破
案例DateRangeFilter.FiscalPeriod:
query=query.Where(po=>(po.PurchaseOrder.FiscalDate.Year==dateRange.Year)&&
(po.PurchaseOrder.FiscalDate.Period==dateRange.Number));
打破
案例DateRangeFilter.FiscalYear:
query=query.Where(po=>po.PurchaseOrder.FiscalDate.Year==dateRange.Year);
打破
违约:
打破
}
基本上Linq to SQL无法翻译您的表达式,因此您应该在查询中调用.ToList()(或.AsEnumerable())
,它将获取数据drom db,然后您可以将表达式与int.Parse一起使用如何获取“query”变量?您的意思是:int.Parse(query.Sum(x=>x.ExpectedQuantity).ToList())?这不起作用,总和仍然告诉我它无法转换。不,这不会有帮助,你能提供一个初始化查询变量的代码吗?尝试将IQueryable query=This.Database.POProducts更改为var query=This.Database.POProducts.ToList(),如果我这样做,switch语句中的后续行将不会编译,因为查询将转换为列表。