2014-01-13 13 views
1

我能夠使用下面的代碼有條件地添加一個孩子xelement,但是當我嘗試添加多個元素時,我得到語法警告。我怎樣才能添加多個?有條件地添加多個孩子XElements

OK

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

回答

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

謝謝,我沒有注意到......我一直專注于越來越也許你應該使用不在這裏使用查詢多個孩子補充說我沒注意:) –