0

我正在寻找有关构建 LINQ 查询的帮助。我想获取特定数据类型的所有选项卡。我开始构建查询,但似乎仍有一些问题。感谢任何反馈。谢谢杰伊

  <DataType name="WELL_INDUSTRY">
    <Database key1="key1" key2="" delimeter="">
      <Tabs>
        <Tab>
          <Name>Basic</Name>
var tabs = from tab in doc.Descendants("Tab")
           where tab.Parent.Parent.Attribute("Name").ToString() == "WELL_INDUSTRY"
           select new
           {
               Name = tab.Descendants("Name").First().Value
           };

foreach (var tab in tabs)
    Debug.WriteLine(tab.Name); 
4

1 回答 1

0

我会说,你是从问题的错误方面开始的。为什么不<DataType>先找到,然后选择所有包含<Tab>s的?

var tabs = from dt in doc.Descendants("DataType")
           where (string)dt.Attribute("Name") == "WELL_INDUSTRY"
           from tab in dt.Elements("Database").Elements("Tabs").Elements("Tab")
           select new
           {
               Name = (string)tab.Elements("Name").First()
           };

我还建议使用/与正确的元素名称替换doc.Descendants("DataType")严格的匹配。它将使查询更快。我不能为你这样做,因为我不知道整个文档结构。ElementElements

于 2013-08-20T17:52:43.970 回答