有条件地添加多个子XElements

时间:2014-01-13 21:15:00

标签: c# xml linq linq-to-xml

我可以使用下面的代码有条件地添加一个子xelement但是当我尝试添加多个xelements时,我会收到语法警告。我该如何添加多个?

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

不行

 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),

1 个答案:

答案 0 :(得分: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);

目前尚不清楚为什么要为集合中的每个数字添加所有数字。可能你不应该在这里使用查询:

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);