无法将类型“System.Linq.IQueryable

本文关键字:AuthenticationApp Models User IQueryable Linq 类型 System | 更新日期: 2023-09-27 18:18:22

我的linq是这样的:

User us = from s in entities.Users
          where s.Username.Equals(username)
          select s;

知道为什么我会收到上述错误吗?

无法将类型“System.Linq.IQueryable<AuthenticationApp.Models.User>”

使用 FirstOrDefault :-

User us = (from s in entities.Users
           where s.Username.Equals(username)
           select s).FirstOrDefault();

您的查询返回多个结果,但您尝试将其存储在只能容纳一个对象的AuthenticationApp.Models.User中,从而导致转换错误。

或者更好:-

User us = entities.Users.FirstOrDefault(x => x.Username.Equals(username));

更新:

如果您确定它只会返回 1 个对象,您也可以使用 SingleOrDefault。在此处检查两者之间的差异。

您收到错误,因为投影返回IEnumerable ( IQueryable (。要按名称获取User,您可以使用以下内容:

try
{
    var user = entities.Users.SingleOrDefault(u => u.Username.Equals(username));
}
catch
{
    // handle the case when there are more than 
    // one user with given name in DB
}
相关文章:
  • 没有找到相关文章