IQueryable不包含' Where'的定义。 Linq,C#

时间:2017-01-30 17:54:56

标签: 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;
            }

1 个答案:

答案 0 :(得分:4)

WhereIQueryable<T>上的扩展方法,而不是IQueryable。您需要设置query类型IQueryable<T>才能进一步过滤查询。您可以使用var或预测实际金额而不是带有金额的匿名对象来执行此操作,从而允许queryIQueryable<decimal>(或Amount的任何数字类型1}}是)。