如何读取对象数组

本文关键字:数组 取对象 何读 | 更新日期: 2023-09-27 18:30:12

我有一个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

最终,我想访问ModelingPolicy[0],就像访问prod.Identifier[0]一样。Product类是从web服务返回的,我无法访问它的定义。至少我不认为我会。

感谢您的指导!

如何读取对象数组

在我看来像:

var ecoResProductMaster = product.Product[0].EcoResProductMaster; // Product type
var modelingPolicy = ecoResProductMaster.ModelingPolicy;

你试过这个吗?

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对象,这只会混淆

在这里很难说出你要做什么。这是列表还是数组?

如果它是一个列表,那么您只需在列表中进行foreach即可访问每个对象。

就像你有

List<SomeObject> someObjectList = new List<SomeObject>();

然后,在将一堆SomeObjects添加到列表中后,您可以在foreach循环中访问SomeObjects。

foreach (SomeObject s in someObjectList)
{
   // then to access nested objects
   var n = s.SomeNestedObject;
   // do something with n
}

感谢大家的投入。SmartDev的回答帮助我访问了内部数组中的对象。要做到这一点,只需执行以下操作:

var productMaster = (EcoResProductMaster)product.Product[0];
var modelingPolicy = productMaster.ModelingPolicy[0];

当然,这是假设在数组中只返回一个对象,因此返回"[0]",但这最终应该进入foreach循环。

我学到的是,如果返回的对象没有索引,如//#2,如上所述,类型转换应该允许我访问它。但是,如果返回索引,如//#1,那么使用[0]将允许我访问其属性。