C# 将foreach嵌套到链接的linq表达式中

C# 将foreach嵌套到链接的linq表达式中,c#,linq,C#,Linq,我不知道是否有可能做到我想的,但我想值得一试:) 我能把这两个嵌套的前额结合起来吗 foreach ( var dept in curDevice.Personnel.Department.Company.Departments ) { foreach ( var personnel in dept.Personnels ) { myPersonnels.Add(personnel); } } 我想把这个嵌套的for each转换成一个链式linq表达式

我不知道是否有可能做到我想的,但我想值得一试:)

我能把这两个嵌套的前额结合起来吗

foreach ( var dept in curDevice.Personnel.Department.Company.Departments )
{
    foreach ( var personnel in dept.Personnels )
    {
        myPersonnels.Add(personnel);
    }
}
我想把这个嵌套的for each转换成一个链式linq表达式。有可能吗?如果是,如何使用?

使用以下方法:

使用以下方法:

使用

使用


这是员工的偏好(看看我在那里做了什么?),但如果这是我开始的话,我喜欢坚持使用函数式编程

您可以将
foreach
语言构造替换为
List.foreach
方法

curDevice.Personnel.Department.Company.Departments
    .SelectMany(department => department.Personnels)
    .ToList()
    .ForEach(personnel => myPersonnels.Add(personnel);
通常,我们会为委托使用较短的参数名称:

curDevice.Personnel.Department.Company.Departments
    .SelectMany(d => d.Personnels)
    .ToList()
    .ForEach(p => myPersonnels.Add(p);
而且,如果myPersonnels只是一个集合,您可以直接创建它:

var myPersonnels = curDevice.Personnel.Department.Company.Departments
    .SelectMany(d => d.Personnels)
    .ToList();
或者,如果它已经是一个
列表
,您可以向其中添加一个
IEnumerable

myPersonnels.AddRange(
    curDevice.Personnel.Department.Company.Departments
        .SelectMany(d => d.Personnels)
);

这是员工的偏好(看看我在那里做了什么?),但如果这是我开始的话,我喜欢坚持使用函数式编程

您可以将
foreach
语言构造替换为
List.foreach
方法

curDevice.Personnel.Department.Company.Departments
    .SelectMany(department => department.Personnels)
    .ToList()
    .ForEach(personnel => myPersonnels.Add(personnel);
通常,我们会为委托使用较短的参数名称:

curDevice.Personnel.Department.Company.Departments
    .SelectMany(d => d.Personnels)
    .ToList()
    .ForEach(p => myPersonnels.Add(p);
而且,如果myPersonnels只是一个集合,您可以直接创建它:

var myPersonnels = curDevice.Personnel.Department.Company.Departments
    .SelectMany(d => d.Personnels)
    .ToList();
或者,如果它已经是一个
列表
,您可以向其中添加一个
IEnumerable

myPersonnels.AddRange(
    curDevice.Personnel.Department.Company.Departments
        .SelectMany(d => d.Personnels)
);

Ken几乎是对的,但如果我是对的,myPersonnels列表是一个外部列表,您希望在其中复制“查询”的结果。前两个答案可读性很强,但如果您想很快编写代码,可以编写以下内容:

curDevice.Personnel.Department.Company.Departments
    .SelectMany(x => x.Personnels) // selecting the personnels
    .ToList()
    .Foreach(myPersonnels.Add); // iterate trough the personnels list and copy them into the external list

Ken几乎是对的,但如果我是对的,myPersonnels列表是一个外部列表,您希望在其中复制“查询”的结果。前两个答案可读性很强,但如果您想很快编写代码,可以编写以下内容:

curDevice.Personnel.Department.Company.Departments
    .SelectMany(x => x.Personnels) // selecting the personnels
    .ToList()
    .Foreach(myPersonnels.Add); // iterate trough the personnels list and copy them into the external list

如果我们知道我的员工是什么,下面的两个答案都会有用was@Yakyb是的,我想它可能有一个
AddRange
,而下面的两个答案都会有用,如果我们知道我的员工是什么was@Yakyb是 啊我想它可能有一个
AddRange
在它上面…我最喜欢这个答案,因为它在同一行中也做add操作。我最喜欢这个答案,因为它在同一行中也做add操作。