编程语言
首页 > 编程语言> > c# – 使用LINQ将一个List复制到另一个List和SubList

c# – 使用LINQ将一个List复制到另一个List和SubList

作者:互联网

我有一个员工列表,所有员工都有另一个嵌套列表,称为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)));

标签:c,linq,linq-to-objects,c-4-0
来源: https://codeday.me/bug/20190621/1250059.html