Gin*_*iha 4 c# linq asp.net asp.net-mvc
我有两个清单.从一个我想要两个选择少数数据,然后将该数据保存到另一个列表.
var ikj = Model.EmployeeInformationList
.Select(m => new { m.GEmployeeGenInfoID, m.strDesignationName, m.strEmpOldCardNo, m.StrEmpID, m.GFactoryID, m.StrEmpName })
.Distinct().ToList();
List<HolidayAlwEmployeeInfo> targetList = new List<HolidayAlwEmployeeInfo>(ikj.Cast<HolidayAlwEmployeeInfo>());
Model.HolidayAlwEmployeeInfoList = targetList;
Run Code Online (Sandbox Code Playgroud)
但是我收到了这个错误
无法将类型为'<> f__AnonymousType5`6 [System.Guid,System.String,System.String,System.String,System.Guid,System.String]'的对象强制转换为'FactoryProduct.Entities.Payroll.HolidayAlwEmployeeInfo'
Den*_*voy 10
您正在尝试投是通过调用创建匿名类型的实例new { m.GEmployeeGenInfoID, m.strDesignationName, m.strEmpOldCardNo, m.StrEmpID, m.GFactoryID, m.StrEmpName }的类型HolidayAlwEmployeeInfo,你不能这样做.
相反,你需要像这样重写第一行:
var ikj = Model.EmployeeInformationList
.Select(m => new HolidayAlwEmployeeInfo(
m.GEmployeeGenInfoID,
m.strDesignationName,
m.strEmpOldCardNo,
m.StrEmpID,
m.GFactoryID,
m.StrEmpName ))
.Distinct()
.ToList();
Run Code Online (Sandbox Code Playgroud)
并确保HolidayAlwEmployeeInfo类有合适的构造函数把所有的参数m.GEmployeeGenInfoID,m.strDesignationName,m.strEmpOldCardNo,m.StrEmpID,m.GFactoryID,m.StrEmpName
或者(正如Stephen Muecke在他的评论中提到的),您可以HolidayAlwEmployeeInfo使用简单的构造函数进行实例化,并在初始化程序中指定属性/字段,如下所示:
var ikj = Model.EmployeeInformationList
.Select(m => new HolidayAlwEmployeeInfo()
{
GEmployeeGenInfoID=m.GEmployeeGenInfoID,
strDesignationName=m.strDesignationName,
strEmpOldCardNo=m.strEmpOldCardNo,
StrEmpID=m.StrEmpID,
GFactoryID=m.GFactoryID,
StrEmpName=m.StrEmpName
})
.Distinct()
.ToList();
Run Code Online (Sandbox Code Playgroud)