Joh*_*ann 4 c# linq linq-to-objects c#-4.0
我有一个员工列表,所有员工都有另一个嵌套列表,称为 EmployeeValuesCollection。
所以我的课是这样的:-
public Employee(int employeeID, string jobTitle, int companyID,
List<EmployeeValues> employeeValuesCollection)
{
EmployeeID = employeeID;
JobTitle = jobTitle;
CompanyID = companyID;
EmployeeValuesCollection = employeeValuesCollection;
}
Run Code Online (Sandbox Code Playgroud)
现在我希望使用 LINQ 从另一个对象填充这个对象,到目前为止我已经:-
List<DataFileRow> dataFiles = dfRow.Rows;
dataFiles
.ForEach(l => employeeList
.Add(new Employee(l.EmpID, l.JobTitle, l.CompID)));
Run Code Online (Sandbox Code Playgroud)
这是可行的,但我不知道如何在声明中添加employeeValuesCollection。可以做吗?
所以我在想:-
dataFiles
.ForEach(l => employeeList
.Add(new Employee(l.EmpID, l.JobTitle, l.CompID,
new List<EmployeeValuesCollection> .............)));
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助和时间。
小智 5
最好在 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);
}
Run Code Online (Sandbox Code Playgroud)
您可以使用 LINQ 语句作为
dataFiles.ForEach(l => employeeList.Add(new Employee(l.EmpID, l.JobTitle, l.CompID, l.EmployeeValuesCollection)));
Run Code Online (Sandbox Code Playgroud)