Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将一个类的列表转换为另一个类的列表?_C#_Entity Framework - Fatal编程技术网

C# 将一个类的列表转换为另一个类的列表?

C# 将一个类的列表转换为另一个类的列表?,c#,entity-framework,C#,Entity Framework,我正在从实体框架调用一个存储过程,并试图获取模型视图类中存储过程的结果,但在转换从实体框架获得的结果类列表时出错- 下面是我尝试过的代码,但在尝试强制转换时出现错误,我尝试了其他方法,也像ConvertAll一样,但不起作用- public List<DepartmentModelView> GetDepartmentData() { using (Model1Container obj = new Model1Container())

我正在从实体框架调用一个存储过程,并试图获取模型视图类中存储过程的结果,但在转换从实体框架获得的结果类列表时出错-

下面是我尝试过的代码,但在尝试强制转换时出现错误,我尝试了其他方法,也像ConvertAll一样,但不起作用-

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
            };
        }
    }
}