'IQueryable'不包含'OrderByDescending'的定义

tsh*_*ake 5 .net c# linq iqueryable

在where子句中获取orderby的此错误.我之所以这样做,是因为之前,如果我没有定义'人',我会在返回时收到错误,因为人们说这个名字'人'在当前的情境中并不存在.我该如何解决?

 public JsonResult PersonsList(string birthyear)
 {
     TutorialDBContext db = new TutorialDBContext();
     var NumericYear = Convert.ToInt32(birthyear);
     IQueryable people;

     if (birthyear == "All")
     {
          people = from m in db.persons
                   select m;

          people = people.OrderByDescending(s => s.birthdate);
     }
     else
     {
          people = from m in db.persons
                   where m.birthdate.Year >= NumericYear
                   where m.birthdate.Year <= (NumericYear + 9)
                   select m;
     }

     return Json(people, JsonRequestBehavior.AllowGet);
 }
Run Code Online (Sandbox Code Playgroud)

Jon*_*nna 6

因为确实没有这样的方法.有一个接受一个IQueryable<T>.使用

IQueryable<Person> people;
Run Code Online (Sandbox Code Playgroud)

或任何适合的元素类型.


Cod*_*ter 5

OrderByDescending()是 的扩展方法IQueryable<T>,而不是非泛型的扩展方法IQueryable

所以你需要声明peopleIQueryable<Person>.

  • @CodeCaster 变量的类型为`IQueryable&lt;T&gt;`。查找`OrderByEnumerable`时,编译器会找到`IQueryable&lt;T&gt;`的扩展方法_before_`IEnumerable&lt;T&gt;`的扩展方法,因为声明类型的扩展方法会在派生类型的扩展方法之前选择)。 (2认同)