C# 无法隐式转换IQueryable
我有一个场景,如果给定了日期,我需要过滤查询 我已经创建了一个过滤器扩展C# 无法隐式转换IQueryable,c#,asp.net-mvc,linq,asp.net-mvc-4,C#,Asp.net Mvc,Linq,Asp.net Mvc 4,我有一个场景,如果给定了日期,我需要过滤查询 我已经创建了一个过滤器扩展 public static IQueryable<T> Between(this IQueryable<T> qry, DateTime start, DateTime end) { return from i in qry
public static IQueryable<T> Between(this IQueryable<T> qry,
DateTime start,
DateTime end)
{
return from i in qry
where i.Date >= start &&
i.Date <= end
select i;
}
我得到了这个错误,它说:
无法将类型“System.Linq.IQueryable”隐式转换为System.Linq.IQueryable“
我错过了什么?或者应该做些什么来实现过滤器?任何帮助都将不胜感激。谢谢 选择FooVM结果时,请尝试使用另一个变量而不是foo
foo2 = foo
.Select(f => new FooVm {
FooId = f.Id,
FooName = f.Name
});
return View (foo2);
在第一行中,您“隐式”使用“var”将foo声明为
IQueryable
,然后在最后尝试将其分配给IQueryable,因为var foo
属于IQueryable
类型。当应用newFooVm
的Between和select时,不能将此隐式转换为Foo。Select的返回类型将导致一个IQueryable
,因此您需要使用一个新变量。对于e.q
IQueryable<FooVm> result = foo
.Between(start, end)
.Select(f => new FooVm {
FooId = f.Id,
FooName = f.Name
});
IQueryable结果=foo
.介于(开始、结束)
.选择(f=>newfoovm{
FooId=f.Id,
foonName=f.Name
});
是。我试过这个,效果很好。但是我不能使用相同的变量吗?
IQueryable<FooVm> result = foo
.Between(start, end)
.Select(f => new FooVm {
FooId = f.Id,
FooName = f.Name
});