我有一个lambda表达式,它返回表中两个字段的总和。问题是字段(ExpectedQuantity)是一个字符串,而QtyExpected是一个int。我以为我可以在我的lambda表达式中使用int.Parse,但是我收到错误,说SQL无法翻译它。
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;
}
答案 0 :(得分:0)
基本上Linq to SQL无法翻译你的表达式,所以你应该在你的查询中调用.ToList() (or .AsEnumerable())
,它将获取数据drom db,而不是你可以使用你的表达式与int.Parse