如何编辑对象深处的 属性
How to edit a property that is deep within an object
假设有一个人对象有很多ICollection
ObjectType2 有 Icollection
因此,要编辑 属性,理论上您可以使用 forloop 进行深入搜索。
但是,什么是语法上更好的更好方法。
例如,要编辑一个名为 PP 的 属性,可以执行以下操作:
foreach (var item in PersonData)
{
foreach (var item2 in item.Staffs)
{
foreach (var item3 in item2.Employees)
{
foreach (var item4 in item3.EmployeePositions)
{
item4.PP = "test";
}
}
}
}
但我正在寻找一些非常好的东西,例如:
无论是通过 linq 还是其他方法。
var positions = PersonData
.SelectMany(p => p.Staffs)
.SelectMany(s => s.Employees)
.SelectMany(e => e.EmployeePositions);
foreach (var position in positions)
{
position.PP = "test";
}
这相当于嵌套循环。
如果这些对象存储在数据库中,您几乎肯定会针对 EmployeePositions
table 进行查询,可能会通过返回 Employees
或 Staff
来过滤它] tables.
如果您真的需要访问 EmployeePositions
的所有实例,您可能需要一个包含它们的单独集合,而不是不断地枚举其他对象的属性来找到它们。
假设有一个人对象有很多ICollection ObjectType2 有 Icollection
因此,要编辑 属性,理论上您可以使用 forloop 进行深入搜索。 但是,什么是语法上更好的更好方法。
例如,要编辑一个名为 PP 的 属性,可以执行以下操作:
foreach (var item in PersonData)
{
foreach (var item2 in item.Staffs)
{
foreach (var item3 in item2.Employees)
{
foreach (var item4 in item3.EmployeePositions)
{
item4.PP = "test";
}
}
}
}
但我正在寻找一些非常好的东西,例如: 无论是通过 linq 还是其他方法。
var positions = PersonData
.SelectMany(p => p.Staffs)
.SelectMany(s => s.Employees)
.SelectMany(e => e.EmployeePositions);
foreach (var position in positions)
{
position.PP = "test";
}
这相当于嵌套循环。
如果这些对象存储在数据库中,您几乎肯定会针对 EmployeePositions
table 进行查询,可能会通过返回 Employees
或 Staff
来过滤它] tables.
如果您真的需要访问 EmployeePositions
的所有实例,您可能需要一个包含它们的单独集合,而不是不断地枚举其他对象的属性来找到它们。