在linq2sql lambda表达式中的字符串到int

时间:2013-09-10 15:11:27

标签: linq-to-sql

我有一个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;
        }

1 个答案:

答案 0 :(得分:0)

基本上Linq to SQL无法翻译你的表达式,所以你应该在你的查询中调用.ToList() (or .AsEnumerable()),它将获取数据drom db,而不是你可以使用你的表达式与int.Parse