2014-01-13 2 views
1

Я могу условно добавить один дочерний элемент xelement, используя приведенный ниже код, однако, когда я пытаюсь добавить несколько xelements, я получаю предупреждения синтаксиса. Как добавить несколько?Условно добавление нескольких дочерних XElements

OK

new XElement("AllNumbers", 
       bonusNumbers.Any() ? 
       from n in bonusNumbers select 
       new XElement("BonusNumbers", bonusNumbers.ToArray()) 
       :null), 

Не OK

new XElement("AllNumbers", 
       numbers.Any() ? 
       from n in numbers select 
       new XElement("Numbers", numbers.ToArray()) 
       :null; 

       bonusNumbers.Any() ? 
       from n in bonusNumbers select 
       new XElement("BonusNumbers", bonusNumbers.ToArray()) 
       :null), 

ответ

2
new XElement("AllNumbers", 
    numbers.Any() ? 
    from n in numbers 
    select new XElement("Numbers", numbers.ToArray()) 
    : null, // should be , instead of ; 

    bonusNumbers.Any() ? 
    from n in bonusNumbers 
    select new XElement("BonusNumbers", bonusNumbers.ToArray()) 
    : null); 

Btw его не ясно, почему вы добавляете все номера для каждого номера в коллекции. Возможно, вы должны использовать не использовать запросы здесь:

new XElement("AllNumbers", 
    numbers.Any() ? new XElement("Numbers", numbers) : null, 
    bonusNumbers.Any() ? new XElement("BonusNumbers", bonusNumbers) : null); 

Или, если вы хотите поместить каждое число в собственном элементе:

new XElement("AllNumbers", 
    numbers.Any() ? 
     new XElement("Numbers", 
      numbers.Select(n => new XElement("Number", n))) : null, 
    bonusNumbers.Any() ? 
     new XElement("BonusNumbers", 
      bonusNumbers.Select(n => new XElement("Number", n))) : null); 
+1

Спасибо, я не заметил, что ... Я сконцентрировалась на получение несколько детей добавили, что я не обращал внимания :) –

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