【问题标题】:Multiple where in linq (xml)?linq(xml)中的多个位置?
【发布时间】:2011-05-23 08:09:39
【问题描述】:

我想通过在 linq 中给出 linktext(Last 3 Months) 和 SecondaryLink linkid s14 来读取 navlinks(l63) 的链接 ID:

<SecondaryLink>
  <LinkID>
    <![CDATA[s14]]>
  </LinkID>
  <LinkText>
    <![CDATA[All Brands]]>
  </LinkText>
  <LeftMenu>
    <NavLinks>
      <LinkID>
        <![CDATA[l63]]>
      </LinkID>
      <LinkText>
        <![CDATA[Last 3 Months]]>
      </LinkText>
    </NavLinks>
  </LeftMenu>
</SecondaryLink>

这就是我所拥有的,我想再提供一个 where 条件。

 string secondaryid = doc.Descendants()
                         .Elements("LinkText")
                         .Where(x => x.Value == "Last 3 Months")
                         .Single()
                         .Parent
                         .Element("LinkID").Value;

即linkid=s14

【问题讨论】:

  • 这里没有问题。注意没有问号?
  • 您想通过在 linq 中给出 linktext(Last 3 Months) 和 SecondaryLink linkid s14 来读取 navlinks(l63) 的链接 id
  • 在帖子的第一位添加问号不会将其变成问题。 How to ask 在 SO 上,一般来说,How to ask the perfect question
  • SecondaryLink 元素与 LeftMenu 有什么关系还不清楚。
  • @Bruce:XML 格式在这里没有帮助......我误读了它。将编辑,然后看看我是否可以检查您的答案...请注意,合理地格式化问题是任何提问者都可以做的事情,无论母语如何。

标签: c# .net xml linq


【解决方案1】:
    var q = from c in xml.Descendants("SecondaryLink")
            where (string)c.Element("LinkID") == "s14"
            where (string)c.Element("LeftMenu").Element("NavLinks").Element("LinkText") == "Last 3 Months"
            select c.Element("LeftMenu").Element("NavLinks").Element("LinkID");

【讨论】:

  • 除了将结果转换为字符串之外,这对我来说是正确的。
猜你喜欢
  • 2021-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-10
相关资源
最近更新 更多