У меня есть следующий XML-документ, загружаемый в C # Silverlight:
<parent>
<son name="Jim">
<grandson>Billy</grandson>
<granddaughter>Sue</granddaughter>
</son>
<daughter name="Sally">
</daughter>
</parent>
Я бы хотел выполнить запрос LINQ, чтобы я запрашивал родительский элемент и получал список только для "сын" и "дочерний" узлов. Когда я добираюсь до узла типа «сын», я хочу сделать еще один запрос для его собственных потомков.
Я пробовал это:
IEnumerable<XElement> Children =
from childNode in parents.Descendants()
select (XElement)childNode ;
foreach(XElement childNode in Children){
// other code
}
но это дает мне все (сын, дочь, внук, внучка).
Я хотел бы сделать что-то вроде этого:
foreach(XElement childNode in Children){
switch(childNode.Name.ToString()){
case "son":
// look for "grandson" and "granddaughter" as children of "son" now
break;
case "daughter":
// don't look for anything
break;
}
}
Итак, в основном, я хочу, чтобы в запросе возвращался только первый уровень дочерних элементов, а остальные я буду запрашивать позже.
Я не уверен, следует ли это делать в исходном запросе LINQ, в условии foreach или как. У меня нет контроля над форматом документа XML, поэтому я не могу изменить его на что-то лучшее. Спасибо!