c# - 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);
}
解决方案
如果我了解您要达到的目标...您似乎使事情复杂化了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();
}
推荐阅读
- node.js - 有模块问题 Dockerizng 简单节点应用程序
- java - 输出是23。请解释
- android - QT Android Gstreamer RTMP流管道绿线故障
- npm - npm install 给出 '.' 不被识别为内部或外部命令、可运行程序或批处理文件。错误
- flutter - Flutter 从小部件外部更改 PageView 页面
- python-multiprocessing - 通过 Mac 终端访问 Python 共享内存
- yaml - Prometheus Kubernetes 示例的 YAML 缩进和解释
- pipe - 你能认为命名管道和匿名管道是异步的吗?
- c++ - 保存我从另一个类获得的列表的 const 引用不起作用
- javascript - 在 THREE.js 中一起渲染多个框