首页 > 解决方案 > system.invalidcastexception:'无法转换类型'system.linq.enumerablequery的对象

问题描述

问题是,每当我尝试通过 id 获取用户数据时,不包括数据库 asp.net core 3.1 web api 中的所有字段 我的用户类

public class Getuser
{
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

我的用户信息类

public partial class Userinfo
{
    [Key]
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }
}

我的接口方法

IQueryable<Userinfo> GetUserId(int id);


 

我的仓库代码

public IQueryable<Userinfo> GetUserId(int id)
    {
        return (IQueryable<Userinfo>)_context.Userinfo.ToList().Select(
            b => new Getuser
            {
                UserId = b.UserId,
                FirstName = b.FirstName,
                LastName = b.LastName
            }).AsQueryable();
    }

调用我的 api 控制器的方法

public IActionResult GetUser(int id)
    {
        var user = _userReprository.GetUserId(id);
        if (user == null)
            return NotFound();
        else
            return Ok(user);
    }

标签: c#asp.net-coreasp.net-core-webapi

解决方案


如果我了解您要达到的目标...您似乎使事情复杂化了IQueryable. 为什么不只返回第一个或默认用户

public Getuser GetUserById(int id)
{
    return _context.Userinfo.Where(x => x.Id == id)
        .Select(b => new Getuser
           {
               UserId = b.UserId,
               FirstName = b.FirstName,
               LastName = b.LastName
           }).FirstOrDefault();
}

推荐阅读