Учитывая этот XML:
<foo>
<xxx>Some XXX</xxx>
<bar Attr1="true">Some Bar</bar>
<bar Attr2="true">Some Bar #2</bar>
<bar>Some Bar #3</bar>
<bar>Some Bar #4</bar>
</foo>
У меня есть этот запрос LINQ:
var foos = from query in xmlData.Descendants("foo")
from bars in query.Elements("bar")
select new FooClass
{
xxx = (string)query.Element("xxx"),
barCollection = new BarClass
{
display = bars.Value,
attr1Exists = (answers.Attribute("Attr1") != null ? true : false)
attr2Exists = (answers.Attribute("Attr2") != null ? true : false)
}
};
Это прекрасно работает, если barCollection определена как BarClass.
Однако мне нужно, чтобы это был Список .
Я пробовал другие подходы и заставил это работать, если bar - это List :
var foos = from query in xmlData.Descendants("foo")
select new FooClass
{
xxx = (string)query.Element("xxx"),
bar = query.Elements("bar").Select(x => x.Value).ToList()
};
Но я не могу найти способ смешать их.
Может кто-нибудь показать, как объединить два решения, чтобы BarCollection заполнялся как пользовательский тип, а именно List ?
Обновление: окончательный рабочий код, приведенный ниже, с использованием предоставленных решений
var foos = from query in xmlData.Descendants("foo")
select new FooClass
{
xxx = (string)query.Element("xxx"),
bar = query.Elements("bar").Select(x => new BarClass
{
display = x.Value,
attr1Exists = x("Attr1") != null ? true : false),
attr2Exists = x("Attr2") != null ? true : false)
}
).ToList()
};