我有以下嵌套对象:
我想将此对象转换为flat对象,如下所示:
//just example of code for nested object
var someObj = new List<NestedClass1>
{
new NestedClass1
{
prop1 = "",
prop2 = "",
prop3 = new List<NestedClass2>
{
new NestedClass2
{
prop4 = "",
prop5 = new List<NestedClass3>
{
new NestedClass3
{
prop6 = "",
prop7 = 0,
prop8 = 0,
},
new NestedClass3
{
prop6 = "",
prop7 = 0,
prop8 = 0,
},
}
},
new NestedClass2
{
prop4 = "",
prop5 = new List<NestedClass3>
{
new NestedClass3
{
prop6 = "",
prop7 = 0,
prop8 = 0,
}
}
}
}
}
};
结果对象:
var someResultObj = new List<FlatClass>{
new FlatClass{
prop1 = "",
prop2 = "",
prop4 = "",
prop6 = "",
prop7 = 0,
prop8 = 0,
}
}
你知道如何使用反射或其他方法吗?
我不想使用循环并从此循环和3d方库中初始化我的平面对象。
我想灵活地做,是否可以使用?
感谢。
答案 0 :(得分:1)
这样的事情会起作用
var result = new List<CombinedClass>();
foreach (var item1 in someObj)
foreach (var item2 in item1.prop3)
foreach (var item3 in item2.prop5)
result.Add(
new CombinedClass()
{
prop1 = item1.prop1,
prop2 = item1.prop2,
prop4 = item2.prop4,
prop6 = item3.prop6,
prop7 = item3.prop7,
prop8 = item3.prop8,
});
<强>鉴于强>
internal class CombinedClass
{
public string prop6 { get; set; }
public int prop7 { get; set; }
public int prop8 { get; set; }
public string prop4 { get; set; }
public string prop1 { get; set; }
public string prop2 { get; set; }
}