无法将类型 WebApplication1.models.Table 1 隐式转换为 int
Cannot implicitely convert type WebApplication1.models.Table1 to int
我想在 get api 中使用 sql 查询作为:
[Route("empLevel/{id}")]
public IActionResult GetEmpHierarchy(int id)
{
List<Employee> emp = entity.Employees.ToList();
List<Employee> mngr = entity.Employees.ToList();
var query = (from e in emp
join m in mngr on e.MngId equals m.Id into tab1
from mngrN in tab1.DefaultIfEmpty()
select new Employee { Id = e, MngId = m}).ToList();
return Ok(query);
}
但是我在行 ID = e
上收到一个错误,它说 e
不能转换为 int。
在我的模型中 class 我有:
public partial class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public double Grade { get; set; }
public int? MngId { get; set; }
public virtual SalarySplit GradeNavigation { get; set; }
}
请给出解决方案
因为 e 是一种对象,而您的 ID 是一个 int。
所以你可能想要这样的东西。
select new Employee { Id = e.MngId, MngId = m.Id}).ToList();
变量 e
表示类型 Employee
的对象。您正在尝试将整个对象分配给 属性 Id
。相反,您应该使用 e
对象的 属性 中的值。
var query = (from e in emp
join m in mngr on e.MngId equals m.Id into tab1
from mngrN in tab1.DefaultIfEmpty()
select new Employee { Id = e.Id, MngId = m.Id}).ToList();
奖励: 如果我没记错的话,过滤不会在那里应用,你会得到有或没有经理的对象(两者)。在那种情况下,可以简化查询:
var query = (from e in emp
select new Employee { Id = e.Id, MngId = e.MngId}).ToList();
我想在 get api 中使用 sql 查询作为:
[Route("empLevel/{id}")]
public IActionResult GetEmpHierarchy(int id)
{
List<Employee> emp = entity.Employees.ToList();
List<Employee> mngr = entity.Employees.ToList();
var query = (from e in emp
join m in mngr on e.MngId equals m.Id into tab1
from mngrN in tab1.DefaultIfEmpty()
select new Employee { Id = e, MngId = m}).ToList();
return Ok(query);
}
但是我在行 ID = e
上收到一个错误,它说 e
不能转换为 int。
在我的模型中 class 我有:
public partial class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public double Grade { get; set; }
public int? MngId { get; set; }
public virtual SalarySplit GradeNavigation { get; set; }
}
请给出解决方案
因为 e 是一种对象,而您的 ID 是一个 int。 所以你可能想要这样的东西。
select new Employee { Id = e.MngId, MngId = m.Id}).ToList();
变量 e
表示类型 Employee
的对象。您正在尝试将整个对象分配给 属性 Id
。相反,您应该使用 e
对象的 属性 中的值。
var query = (from e in emp
join m in mngr on e.MngId equals m.Id into tab1
from mngrN in tab1.DefaultIfEmpty()
select new Employee { Id = e.Id, MngId = m.Id}).ToList();
奖励: 如果我没记错的话,过滤不会在那里应用,你会得到有或没有经理的对象(两者)。在那种情况下,可以简化查询:
var query = (from e in emp
select new Employee { Id = e.Id, MngId = e.MngId}).ToList();