如何读取对象数组

时间:2014-11-12 17:00:05

标签: c# arrays object

我有一个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服务返回的,我无法访问其定义。至少我不认为我这样做。

感谢您的指导!

4 个答案:

答案 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]将允许我访问其属性。