2015-07-13 5 views
2

Я звоню в службу третьей стороны, а в ответ они возвращают объект [], называемый Items. Этот массив объектов имеет в своем массиве несколько разных объектов с разными типами.Доступ к объекту [] с разными объектами типа

Вот что Items выглядеть в файле CS:

[System.Xml.Serialization.XmlElementAttribute("REPORT", typeof(REPORT))] 
[System.Xml.Serialization.XmlElementAttribute("_PRODUCT", typeof(_PRODUCT))] 
[System.Xml.Serialization.XmlElementAttribute("_PROPERTY_INFORMATION", typeof(_PROPERTY_INFORMATION))] 
public object[] Items 
{ 
    get 
    { 
     return this.itemsField; 
    } 
    set 
    { 
     this.itemsField = value; 
    } 
} 

Мне нужно получить доступ к _PROPERTY_INFORMATION объекта внутри массива Items. Однако я не уверен, что лучший способ - подойти к такой задаче.

Вот что я в настоящее время есть:

var items = RESPONSE.RESPONSE_DATA[0].PROPERTY_INFORMATION_RESPONSE.Items; 
foreach (_PROPERTY_INFORMATION info in items) 
{ 
    parsedStreetAddress = info.PROPERTY._PARSED_STREET_ADDRESS; 
} 

Есть ли лучший способ с меньшим количеством строк кода, чтобы сделать то же самое? Я просто получаю каждый _PROPERTY_INFORMATION, который находится внутри массива Items.

+0

Вы только ожидаете там быть один 'PROPERTY_INFORMATION' экземпляр в' 'деталей? Или вы просто хотите последний? – Lee

+0

Проверьте тип каждого элемента - если это тот тип, который вы ищете, затем введите и получите доступ к свойству. –

ответ

1

Как об использовании LINQ

_PROPERTY_INFORMATION result = RESPONSE.RESPONSE_DATA[0].PROPERTY_INFORMATION_RESPONSE.Items 
    .First(x => x is _PROPERTY_INFORMATION); 
+1

Это сработало для меня! Именно то, что я хотел. Я не думал об использовании LINQ для этого. Я очень ценю ваш ответ. – Turp

+0

@Turp Его всегда приятно помочь –