У меня возникли проблемы с поиском правильного синтаксиса для использования.C# Linq Получить значение XML по условию
Надеюсь, что код ниже продемонстрирует проблему лучше, чем я могу объяснить это словами. Я пытаюсь получить анонимный тип на основе условий соответствия. Я должен сначала проверить Атрибут для соответствия и вернуть значение только в том случае, если условие выполнено. Если элемент имеет атрибут с именем "value1"
, я возвращаю значение для атрибута с именем "value"
на том же элементе.
Я поставил стрелки <---
, чтобы показать псевдокод, где проблема.
Заранее благодарим любого, кто может помочь.
<item name="DataStore" >
<int name="item1" value="895"/>
<int name="item2" value="245"/>
</item>
<item name="DataStore" >
<int name="item1" value="540"/>
<int name="item2" value="97"/>
</item>
var result = from items in doc.Descendants()
where (string)items.Attribute("name") == "DataStore"
select new {
item1Value = items.Attribute("value").Value, <--- where items.Attribute("name") == "item1" ???
item2Value = items.Attribute("value").Value <--- where items.Attribute("name") == "item2" ???
}
Чтобы быть более ясно, что я должен вернуть «Кортеж» result
, который имеет result.value1
и result.value2
Таким образом, в конце концов, я хочу сказать, что-то вроде:
foreach (var item in result) {
Console.WriteLine(item.value1); //Prints 895 on first iteration
Console.WroteLine(item.value2); //Prints 245 on first iteration
}