2013-09-05 2 views
0

Я строю XML-файл динамически, используя новый XElement(), а на полпути через создание файла мне нужно перебирать набор дочерних записей и создавать для них XElements. Проблема, с которой я сталкиваюсь, заключается в том, что мне нужно создать более 1 XElement за итерацию. Это мой цикл:Использование Linq для XML foreach для создания многоуровневых XElements

from t in trans.SalesTransactionLines 
select new XElement("text", new XAttribute("lang", "en"), t.ItemName) 

Это прекрасно работает, но мне нужно дополнительная «позиция» XElement перед каждым «текстом» Element. Это та вещь, я хочу, что не работает:

from t in trans.SalesTransactionLines 
select new XElement("position",new XAttribute("x", "40"), new XAttribute("y", "420")), 
new XElement("text", new XAttribute("lang", "en"), t.ItemName) 

Это результат я ищу: метод

<position x="40" y="420" /> 
<text>Fender Classic Strat 70s Natural RN</text> 
<position x="40" y="420" /> 
<text>Fender Classic 50s Tele White Blonde</text> 

ответ

0

использования на основе синтаксиса и SelectMany метода вместо:

trans.SalesTransactionLines.SelectMany(x => new[] { 
               new XElement("position", 
                new XAttribute("x", "40"), 
                new XAttribute("y", 420")), 
               new XElement("text", 
                new XAttribute("lang", "en"), 
                x.ItemName) 
}) 
+0

Это похоже на то, что мне нужно, но откуда «т»? – markpsmith

+0

Должен быть 'x' - исправлено уже. – MarcinJuraszek

Смежные вопросы