[英]Copy one List to another List and SubList with LINQ
我有一个员工列表,所有员工都有另一个嵌套列表,称为EmployeeValuesCollection。
所以我的班级是这样的: -
public Employee(int employeeID, string jobTitle, int companyID,
List<EmployeeValues> employeeValuesCollection)
{
EmployeeID = employeeID;
JobTitle = jobTitle;
CompanyID = companyID;
EmployeeValuesCollection = employeeValuesCollection;
}
现在我希望用LINQ从另一个对象填充这个对象,到目前为止我有: -
List<DataFileRow> dataFiles = dfRow.Rows;
dataFiles
.ForEach(l => employeeList
.Add(new Employee(l.EmpID, l.JobTitle, l.CompID)));
但是我不知道如何在语句中添加employeeValuesCollection。 有可能吗?
所以我想的是: -
dataFiles
.ForEach(l => employeeList
.Add(new Employee(l.EmpID, l.JobTitle, l.CompID,
new List<EmployeeValuesCollection> .............)));
谢谢你的帮助和时间。
最好迭代Employee构造函数中的输入参数employeeValuesCollection列表,以创建EmployeeValues类型的局部变量,并将其添加到Employee类的实例列表变量中。 如果我们使用EmployeeValuesCollection = employeeValuesCollection;,我们实际上是在分配引用。 因此,如果我们修改employeeValuesCollection的某些值,则相同的更改将反映到EmployeeValuesCollection。
public Employee(int employeeID, string jobTitle, int companyID, List<EmployeeValues> employeeValuesCollection)
{
EmployeeID = employeeID;
JobTitle = jobTitle;
CompanyID = companyID;
foreach (var obj in employeeValuesCollection)
{
var empVal = new EmployeeValues() { Name = obj.Name};
EmployeeValuesCollection.Add(empVal);
}
您可以使用LINQ语句作为
dataFiles.ForEach(l => employeeList.Add(new Employee(l.EmpID, l.JobTitle, l.CompID, l.EmployeeValuesCollection)));
您可以在每行上使用Linq投影。 我会在'正确的'linq中做到这一点:
employeeList = (from r in dfRow.Rows
select new Employee(r.EmpID, r.JobTitle, r.CompID,
new List<EmployeeValues>(/*parameter*/))).ToList();
在指定EmployeeValues
实际上是什么(以及从DataFileRow
访问哪些属性)之前,很难再说了。 但是,让我们说它只是更多的属性,我会总结它们就像键/值对(尽管类型上的名称复数,这有点令人困惑)。
我在你的问题的第三条评论中采用了这些名称,并假设DataFileRow
类型将这些值公开为名为EmployeeValues
的IEnumerable。 基于此 - 您可以使用内部投影。
employeeList = (from r in dfRow.Rows
select new Employee(r.EmpID, r.JobTitle, r.CompID,
new List<EmployeeValue>((from v in r.EmployeeValues
select new EmployeeValues(v.title, v.value, v.isVisible))).ToList());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.