如何读取对象数组
本文关键字:数组 取对象 何读 | 更新日期: 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]将允许我访问其属性。