选择属性为x的后代,如果不存在,则选择属性为y的位置

时间:2013-01-09 09:26:29

标签: c# linq

我有这个,我可以在期间为2时选择我想要的但是如果期间2不存在我想选择期间为3的地方。怎么样?

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

2 个答案:

答案 0 :(得分:3)

你不能只改变Where to:

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

答案 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();