LINQ to XML - 选择多个属性过滤器?

时间:2013-12-12 05:32:58

标签: c# xml linq

我是 XmlTextReader 的长期用户,但在注意到这里的每个相关问题的答案都是'使用LINQ'之后我决定采取行动,一切到目前为止一直很好。我一直在反对这一点,希望有人可以提供帮助。

我的文件中有以下部分;

  <action_areas>
    <time_slice name="0 - 5" id="1">
      <action_area id="1">
        <aa_team id="1000">9</aa_team>
        <aa_team id="1001">7</aa_team>
      </action_area>
      <action_area id="2">
        <aa_team id="1000">5</aa_team>
        <aa_team id="1001">2</aa_team>

由于文档的结构,我需要将“action_areas”作为传递给初始选择的东西,即;

 var stuff = from item in xDoc.Descendants("action_areas")

所以问题是我遵循哪些陈述,因此我可以根据time_slice名称属性和action_area id属性以及aa_team id属性进行过滤,这样我最终可以使用aa_team语句获取'select new'元素(上例中的9,7,5和2)中包含的内容?

提前致谢。

1 个答案:

答案 0 :(得分:0)

试试这个

string timeSliceToSearchFor = "0 - 5";
string actionAreaToSearchFor = "1";
string aaTeamIdToSearchFor = "1001";

// Returns 7
string value = xDoc .Descendants("action_areas")
                    .Elements("time_slice")
                    .Where(element => element.Attribute("name").Value == timeSliceToSearchFor)
                    .Elements("action_area")
                    .Where(element => element.Attribute("id").Value == actionAreaToSearchFor)
                    .Elements("aa_team")
                    .Where(element => element.Attribute("id").Value == aaTeamIdToSearchFor)
                    .Single().Value;