【问题标题】:C# Linq to XML getting the elements where value of name contains a specific stringC# Linq to XML 获取名称值包含特定字符串的元素
【发布时间】:2017-06-27 14:43:06
【问题描述】:

我有一个包含以下类型元素的 XML 文件:

<add name="$(ReferAEP)" value="$(addressA)" />
<add name="$(ReferBEP)" value="$(addressB)" />

什么是 linq to xml 查询以仅获取“名称”属性包含像 *EP 这样的值的元素?那么上面的两个元素最终会出现在结果中吗?

【问题讨论】:

  • 标签名称是否总是“添加”?
  • @jdweng : 是的,但是还有其他元素 name="xyz" 其中 xyz 不包含 EP
  • 我通常使用字典: Dictionary dict = doc.Descendants("add").GroupBy(x => (string)x.Attribure("name"), y = > (string)y.Attribute("value")).ToDictionary(x => x.Key, y => y.FirstOrDefault());

标签: c# linq


【解决方案1】:

如果您有问题中指定的 xml 标记的外部元素,例如:

<adds>
    <add name="$(ReferAEP)" value="$(addressA)" />
    <add name="$(ReferBEP)" value="$(addressB)" />
</adds>

然后使用下面的 linq 查询:

var query = from d in xdoc.Descendants("adds").Descendants()
            where d.Attribute("name")?.Value.Contains("EP")
            select d;

【讨论】:

  • 打败我。虽然我会使用EndsWith() 而不是Contains()
【解决方案2】:

你在寻找类似的东西

document.Descendants("add").Where(element => element.Attribute("name").Value.EndsWith("EP)"));

【讨论】:

  • 只是想知道这是否会起作用,因为nameEP) 结尾
  • @Sid 谢谢,已修复。
  • 干得好;) 实际上我更喜欢你的答案而不是Habeeb 答案,即使两者都有效。 +1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-12
相关资源
最近更新 更多