0

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

1 回答 1

0

基本上 Linq to SQL 不能翻译你的表达式,所以你应该调用.ToList() (or .AsEnumerable())你的查询,它会从 drom db 中获取数据,然后你可以将你的表达式与 int.Parse 一起使用

于 2013-09-10T15:18:36.593 回答