C# 将一个类的列表转换为另一个类的列表?
我正在从实体框架调用一个存储过程,并试图获取模型视图类中存储过程的结果,但在转换从实体框架获得的结果类列表时出错- 下面是我尝试过的代码,但在尝试强制转换时出现错误,我尝试了其他方法,也像ConvertAll一样,但不起作用-C# 将一个类的列表转换为另一个类的列表?,c#,entity-framework,C#,Entity Framework,我正在从实体框架调用一个存储过程,并试图获取模型视图类中存储过程的结果,但在转换从实体框架获得的结果类列表时出错- 下面是我尝试过的代码,但在尝试强制转换时出现错误,我尝试了其他方法,也像ConvertAll一样,但不起作用- public List<DepartmentModelView> GetDepartmentData() { using (Model1Container obj = new Model1Container())
public List<DepartmentModelView> GetDepartmentData()
{
using (Model1Container obj = new Model1Container())
{
return obj.usp_getDepartment().ToList<usp_getDepartment_Result>().Cast<DepartmentModelView>.ToList();
}
}
请建议我怎么做 如果其余代码正常工作,则可以使用Linq Select投影:
public List<DepartmentModelView> GetDepartmentData()
{
using (Model1Container obj = new Model1Container())
{
return obj.usp_getDepartment().ToList<usp_getDepartment_Result>().Select(m=>new DepartmentModelView{Depid=m.Depid, DepName=m.DepName}).ToList();
}
}
您可以在另一个部分文件中为usp_getDepartment_结果实现隐式强制转换: 那么您现有的代码应该可以工作。使用Nuget的AutoMapper。您可以创建一个从一个类到另一个类的映射,并且可以在映射操作过程中进行各种操作,以防它不是像这样的属性的直接副本
对于像这样的简单情况,当Automapper发现具有相同名称和类型的属性时,它会自动连接转换。您的问题解决了吗?
public class DepartmentModelView
{
public Nullable<int> Depid { get; set; }
public string DepName { get; set; }
}
public List<DepartmentModelView> GetDepartmentData()
{
using (Model1Container obj = new Model1Container())
{
return obj.usp_getDepartment().ToList<usp_getDepartment_Result>().Select(m=>new DepartmentModelView{Depid=m.Depid, DepName=m.DepName}).ToList();
}
}
namespace MvcApplication4.Models
{
public partial class usp_getDepartment_Result
{
static public implicit operator DepartmentModelView(usp_getDepartment_Result input)
{
return new DepartmentModelView
{
Depid = input.Depid,
DepName = input.DepName
};
}
}
}