我有一个查询,我改变了一点,使它成为一个通用的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;
}
答案 0 :(得分:4)
Where
是IQueryable<T>
上的扩展方法,而不是IQueryable
。您需要设置query
类型IQueryable<T>
才能进一步过滤查询。您可以使用var
或预测实际金额而不是带有金额的匿名对象来执行此操作,从而允许query
为IQueryable<decimal>
(或Amount
的任何数字类型1}}是)。