【问题标题】:Conditionally Adding Multiple Child XElements有条件地添加多个子 XElement
【发布时间】:2014-01-13 21:14:59
【问题描述】:

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

好的

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

【问题讨论】:

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


    【解决方案1】:
    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);
    

    【讨论】:

    • 谢谢,我没有注意到...我一直专注于让多个孩子补充说我没有注意:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多