IQueryable 不包含“Where”Linq、C# 的定义

Blo*_*ish 0 c# linq model-view-controller

我有一个查询,我稍微修改了一下,使它成为一个通用的 Iqueryable。然而,现在所有依赖它的代码都更具体地抛出一个错误,说“IQueryable 不包含‘Where’的定义”

我该如何解决这个问题,以便我的 Iqueryable 可以有一个“where”语句

IQueryable query = _db
                .BatchPayments
                .Where(
                    bp => ValidBatchStatuesIds.Contains(bp.Batch.BatchStatusId)
                        && (!OnlineBatchTypes.Contains(bp.Batch.BatchTypeId)
                            || (OnlineBatchTypes.Contains(bp.Batch.BatchTypeId)))
                )
                .GroupBy(i => i.BatchId)
                .Select(i => new
                {
                    Amount = i.Sum(j => j.Amount)
                });

if (model.AmountFrom.HasValue && model.AmountFrom.Value > 0)
            {
                query = query.Where(bp => bp.Amount >= model.AmountFrom); // This is the line it bugs out on that I need to work
                hasInput = true;
            }
Run Code Online (Sandbox Code Playgroud)

Ser*_*rvy 5

Where是 上的扩展方法IQueryable<T>,而不是IQueryable。您需要制作query类型IQueryable<T>以进一步过滤查询。您可以通过使用var或投影实际金额而不是带有金额的匿名对象来做到这一点,允许queryIQueryable<decimal>(或任何数字类型Amount)。