【发布时间】:2017-01-31 01:59:27
【问题描述】:
我有一个查询,我做了一些修改,将它变成了一个通用的 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;
}
【问题讨论】:
-
它必须是 IQuerable
-
指向 Scott... 但由于它返回匿名类型,您必须使用
var。 -
@DStanley 如果是这样(事实并非如此),那么 sn-p 中前面的
Where将无法编译,GroupBy或Select也不会编译。
标签: c# linq model-view-controller