关于c#:Cannot convert var type to list object

 2022-02-13 

Cannot convert var type to list object

本问题已经有最佳答案,请猛点这里访问。

我将返回的项目存储为 var 类型,然后尝试将其与模型类类型的列表对象绑定。但是在这样做的同时,它给出了一个错误消息,

cannot implicitly convert type
System.collections.generic.list to
System.Collections.Generic.List

请帮我解决这个问题。

1
2
3
4
5
6
7
8
9
10
11
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;
}

你可以在一个语句中做到这一点

1
2
3
4
5
6
7
8
9
return (from a in EmpDet
    where a.EmpId.Equals(id)
    select new EmpModel
               { EmpId = a.EmpId,
                 Name = a.Name,
                 City = a.City
               }).ToList();

}


objList 的类型是 List<EmpModel> 但您返回的是匿名类型的 List。你可以这样改变它:

1
2
3
var EmpList = (from a in EmpDet
    where a.EmpId.Equals(id)
    select new EmpModel { EmpId = a.EmpId, Name = a.Name, City = a.City });

如果您仍然遇到错误,可能是因为您无法投影到映射实体上,那么您需要从 EmpModel 实体创建一个具有所需属性的 DTO 类,如下所示:

1
2
3
4
5
public class TestDTO
{
    public string EmpId { get; set; }
    public string Name { get; set; }
}

然后你可以:

1
select new TestDTO { EmpId = a.EmpId, Name = a.Name }