无法将var类型转换为list对象

时间:2017-12-30 17:16:52

标签: c# .net linq

我将返回的项存储到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;
}

2 个答案:

答案 0 :(得分:1)

objList的类型为List<EmpModel>,但您返回的Listanonymous 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();

}