2013-01-09 52 views
0

我有這個,我可以選擇我想要什麼時,期間是2.但如果期間2不存在,我想選擇在期間是3代替。怎麼樣?選擇後裔,其中屬性是x,如果不存在選擇屬性是y

return document.Descendants("time") 
         .Where(node => (string)node.Attribute("period") == "2") 
         .Take(5) 
         .Select(status => WeatherFactory.Create(status, city, pos)) 
         .ToList(); 
+1

爲什麼你需要做的這在一個查詢? –

回答

1

如果您先選擇所有後代那裏期== 2,檢查它是否包含任何結果,如果不選擇所有的後代在那裏期== 3:

var timeDescendants = document.Descendants("time") 
    .Where(node => (string)node.Attribute("period") == "2"); 
if(!timeDescendants.Any()) { 
    timeDescendants = document.Descendants("time") 
     .Where(node => (string)node.Attribute("period") == "3"); 
} 
return timeDescendants.Take(5) 
.Select(status => WeatherFactory.Create(status, city, pos)) 
.ToList(); 
+0

這就是我正在尋找!謝謝 –

3

你就不能改變在哪裏:

.Where(node => (string)node.Attribute("period") == "2" || (string)node.Attribute("period") == "3") 

+0

但實際上。現在它選擇了兩個.. :( –