我将返回的项存储到var类型,然后尝试将其绑定到模型类类型的列表对象。但是在这样做的过程中,它会出错,
无法隐式转换类型
System.collections.generic.list<AnonymousType>
来System.Collections.Generic.List<MyService.Models.EmpModel>
请帮我解决这个问题。
public IEnumerable<EmpModel> GetEmpDetailsById(int id)
{
var EmpList = (from a in EmpDet
where a.EmpId.Equals(id)
select new { a.EmpId, a.Name, a.City });
List<EmpModel> objList = new List<EmpModel>();
objList = EmpList.ToList(); // gives error here
return objList;
}
答案 0 :(得分:1)
objList的类型为List<EmpModel>
,但您返回的List
为anonymous type。您可以这样更改:
var EmpList = (from a in EmpDet
where a.EmpId.Equals(id)
select new EmpModel { EmpId = a.EmpId, Name = a.Name, City = a.City });
如果你仍然得到错误可能是因为你无法投射到映射的实体上,那么你需要创建一个DTO类,其中包含EmpModel
实体所需的属性,如下所示:
public class TestDTO
{
public string EmpId { get; set; }
public string Name { get; set; }
}
然后你可以:
select new TestDTO { EmpId = a.EmpId, Name = a.Name }
答案 1 :(得分:1)
您可以在一个声明中执行此操作
return (from a in EmpDet
where a.EmpId.Equals(id)
select new EmpModel
{ EmpId = a.EmpId,
Name = a.Name,
City = a.City
}).ToList();
}