我有一个.net核心(v3.1),我在其中安装了Microsoft SQL Server实体框架核心的数据库提供程序nuget包。
我只想从数据库中获取两个feild?
错误:严重性代码描述项目文件行抑制状态错误CS0266无法隐式转换类型'System.Linq.IQUERABLE<lt;匿名类型:字符串名称,字符串编号>gt;'到"ExampleAuth.Model.Eemployee"。存在显式转换(分别为你错过了演员阵容?)
public Employee GetById(int id)
{
var response = db.Employee.Where(x => x.Id == id).Select(x => new{x.Name,x.Number});
return response;
}
API是…
[HttpGet]
[Route("GetById/{id}")]
public Employee GetById(int id)
{
if (id != 0)
{
return bl.GetById(id);
}
else
{
throw new Exception("! No Data Found");
}
}
有几件事。首先,您试图返回整个查询,而不是单个员工。其次,您正在创建一个匿名类型,而不是Employee
类的实例。你的代码应该是这样的:
var response = db.Employee
.Single(x => x.Id == id) // Use single to get an individual item
.Select(x => new Employee // Make a new Employee object
{
Name = x.Name,
Number = x.Number
});
现在response
包含一个Employee
对象。请注意,如果没有与该ID匹配的员工,这将引发异常,但这可能是个好主意。您可以通过用SingleOrDefault
替换Single
来处理此问题。
我得到了解决方案。。。看起来像。。
public Employee GetById(int id)
{
var response = db.Employee
.Where(x => x.Id == id)
.Select(x => new Employee{Name = x.Name,Number = x.Number}).FirstOrDefault();
return response;
}
感谢大家。。。
尝试以下查询
var response = (from objEmp in db.Employee where objEmp.Id == id select new
{
Name = objEmp.Name,
Number = objEmp.Number
}).FirstOrDefault();
if(response != null)
{
response.Name // For access name
response.Number // For access number
}