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操作。