当前位置:  开发笔记 > 编程语言 > 正文

我需要一个LINQ表达式来查找一个XElement,其中元素名称和属性与输入节点匹配

如何解决《我需要一个LINQ表达式来查找一个XElement,其中元素名称和属性与输入节点匹配》经验,为你挑选了1个好方法。

当元素名称和所有属性名称和值与输入元素匹配时,我需要替换XElement层次结构中的节点的内容.(如果没有匹配项,则可以添加新元素.)

例如,如果我的数据如下所示:


  one
  two
  three
  four
  five

我想在使用此输入调用方法时找到最后一个元素:

new value

该方法应该没有硬编码元素或属性名称 - 它只是将输入与数据匹配.



1> Mark Cidade..:

这将使任何给定元素与精确标记名称和属性名称/值对匹配:

public static void ReplaceOrAdd(this XElement source, XElement node)
{
    var q = from x in source.Elements()
            where x.Name == node.Name
            && x.Attributes().All(a =>node.Attributes().Any(b =>a.Name==b.Name && a.Value==b.Value))
            select x;

    var n = q.LastOrDefault();

    if (n == null) source.Add(node);
    else n.ReplaceWith(node);                                              
}

var root = XElement.Parse(data);
var newElem =XElement.Parse("new value");

root.ReplaceOrAdd(newElem);

推荐阅读
喜生-Da
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有