Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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# 使用LINQ将一个列表复制到另一个列表和子列表_C#_Linq_C# 4.0_Linq To Objects - Fatal编程技术网

C# 使用LINQ将一个列表复制到另一个列表和子列表

C# 使用LINQ将一个列表复制到另一个列表和子列表,c#,linq,c#-4.0,linq-to-objects,C#,Linq,C# 4.0,Linq To Objects,我有一个员工列表,所有员工都有另一个嵌套列表,称为EmployeeValuesCollection public Employee(int employeeID, string jobTitle, int companyID, List<EmployeeValues> employeeValuesCollection) { EmployeeID = employeeID; JobTitle = jobTitle; Company

我有一个员工列表,所有员工都有另一个嵌套列表,称为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);
        }
所以我的课是这样的:-

public Employee(int employeeID, string jobTitle, int companyID, 
        List<EmployeeValues> employeeValuesCollection)
{
      EmployeeID = employeeID;
      JobTitle = jobTitle;
      CompanyID = companyID;
      EmployeeValuesCollection = employeeValuesCollection;
 }
dataFiles
     .ForEach(l => employeeList
                     .Add(new Employee(l.EmpID, l.JobTitle, l.CompID, 
                          new List<EmployeeValuesCollection> .............)));
public Employee(int-employeeID,字符串jobTitle,int-companyID,
列出员工价值(集合)
{
EmployeeID=EmployeeID;
职位=职位;
CompanyID=CompanyID;
EmployeeValuesCollection=EmployeeValuesCollection;
}
现在,我希望用LINQ从另一个对象填充此对象,到目前为止,我已经:-

List<DataFileRow> dataFiles = dfRow.Rows;
dataFiles
     .ForEach(l => employeeList
                      .Add(new Employee(l.EmpID, l.JobTitle, l.CompID)));
List dataFiles=dfRow.Rows;
数据文件
.ForEach(l=>employeeList
.添加(新员工(l.EmpID、l.JobTitle、l.CompID));
但我不知道如何在声明中添加employeeValuesCollection。有可能吗

所以我在想:-

public Employee(int employeeID, string jobTitle, int companyID, 
        List<EmployeeValues> employeeValuesCollection)
{
      EmployeeID = employeeID;
      JobTitle = jobTitle;
      CompanyID = companyID;
      EmployeeValuesCollection = employeeValuesCollection;
 }
dataFiles
     .ForEach(l => employeeList
                     .Add(new Employee(l.EmpID, l.JobTitle, l.CompID, 
                          new List<EmployeeValuesCollection> .............)));
数据文件
.ForEach(l=>employeeList
.Add(新员工)(l.EmpID、l.JobTitle、l.CompID、,
新名单………);

感谢您的帮助和时间。

最好在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投影。我会用“适当”的方式来做:

employeeList = (from r in dfRow.Rows
  select new Employee(r.EmpID, r.JobTitle, r.CompID, 
   new List<EmployeeValues>(/*parameter*/))).ToList();

那是行不通的。您不能将
列表
分配给单个
员工价值集合
。你到底想给它分配什么?好的,基本上我得到一个对象,它有一个en employee,然后是一个附加到每个employee的变量列表。现在我想在我的类中获取这些值,这样我就可以操作我想要的数据。我得到的对象与我的对象完全相同,但属性名称不同。
EmployeeValuesCollection
期望值是多少(假设它们可能是倍数)它们是
dataFiles
的一部分吗?是的,基本上一个数据文件将有一个员工,然后是一个值列表,不过,列表中还有更多我需要的详细信息,这就是为什么我要创建自己的对象。数据文件中的一个或多个属性构成了您在EmployeeValuesCollection中需要的对象?谢谢Andras,这应该可以实现,但是EmployeeValues并不像它看起来那样直截了当。我将与封装该对象的开发人员谈一谈,但我在其他东西上尝试了您的代码,它可以工作。谢谢