Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法隐式转换IQueryable_C#_Asp.net Mvc_Linq_Asp.net Mvc 4 - Fatal编程技术网

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
类型。当应用new
FooVm
的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
       });