我有一个C#对象列表,我试图访问它的嵌套对象。这是Visual Studio调试器的结构(抱歉,我不能嵌入图像,因为我是该网站的新手):
>product.Product {Product.AxdEntity_Product_EcoResProduct[1]}
>> - [0] {Product.EcoResProductMaster} // #1 - Please note curley braces
>>> - [Product.EcoResProductMaster] // #2 - Please note brackes
>>> + base {Product....
>>> + ModelingPolicy
>> + Identifier
要访问#1中的属性,我会执行以下操作:
var prod = product.Product[0];
然后我可以访问"标识符"就这样:
var identifier = prod.Identifier[0]...
要访问#2中的属性(例如ModelingPolicy),我不确定该怎么做:
var prod = product.Product[0][WhatShouldGoHere?].ModelingPolicy[0] ...?? I need help here
最后,我想像使用prod.Identifier [0]一样访问ModelingPolicy [0]。 Product类是从Web服务返回的,我无法访问其定义。至少我不认为我这样做。
感谢您的指导!
答案 0 :(得分:0)
var productList = product.ToList()
foreach(var prod in productList)
{
var identifier = prod.identifier
foreach (var modelingPolicy in identifier.ModelingPolicy)
{
//do somthing with modeling policy
}
//do more stuff with product
}
另外,请将您的命名约定排除在外。拥有一个名为product
的数组,其中包含许多Product
个对象,这只会令人困惑
答案 1 :(得分:0)
很难说出你要去的地方。这是List还是数组?
如果它是一个列表,那么你可以通过列表来访问每个对象。
就像你有
一样List<SomeObject> someObjectList = new List<SomeObject>();
然后在向List添加一堆SomeObjects后,您只需访问foreach循环中的SomeObjects。
foreach (SomeObject s in someObjectList)
{
// then to access nested objects
var n = s.SomeNestedObject;
// do something with n
}
答案 2 :(得分:0)
在我看来:
var ecoResProductMaster = product.Product[0].EcoResProductMaster; // Product type
var modelingPolicy = ecoResProductMaster.ModelingPolicy;
你试过这个吗?
答案 3 :(得分:0)
感谢大家的投入。 SmartDev的答案帮助我访问了内部数组中的对象。为此,只需执行以下操作:
var productMaster = (EcoResProductMaster)product.Product[0];
var modelingPolicy = productMaster.ModelingPolicy[0];
当然,这假设在数组中只返回一个对象,因此“[0]”但最终应该进入foreach循环。
我学到的是如果返回一个没有索引的对象,如上面提到的//#2,那么类型转换应该允许我访问它。但是,如果返回索引,例如//#1,则使用[0]将允许我访问其属性。