无法将带有[]的索引应用于表达式

Joh*_*ohn 2 c# indexing expression

 var dbPerson = from p in db.People 
                where p.Id == PersonId select p;
 dbPerson[0].HolidaysRemaining--;
Run Code Online (Sandbox Code Playgroud)

向我抛出dbPerson [0]错误,说不能将[]的索引应用于类型'system.linq.lqueryable,holidayBookingApp.model.person>的表达式

有人可以建议我如何解决这个问题吗?

谢谢

Mic*_*eld 5

LINQ查询的结果不是List,而是自定义类型IQueryable,没有索引器。您不能以这种形式随机访问LINQ查询的结果。

如果确实需要,可以有多种选择:

  • 将其转换为可实现的内容IList,例如call dbPerson.ToList()
  • 如果您确实只需要第一个元素,则可以使用IQueryableextension方法实现此目的:dbPerson.First()
  • 如果您希望将任意元素设为[x],则可以使用IQueryable扩展方法:dbPerson.Skip(x).First()

  • h,你是对的;我什至一开始甚至跳过/接受并“修复”了它:\ (3认同)