【问题标题】:Linq to XML joinLinq 到 XML 连接
【发布时间】:2010-08-22 16:16:04
【问题描述】:

我有一个 XML 文件,其中值存储在用逗号分隔的类别元素中:

<Company>
<name>Test</name>
<category>Power,Water,Gas</category>
</Company>

<Company>
<name>Test2</name>
<category>Water,Gas</category>
</Company>

在其他 XML 文件中,类别元素中只存储一个值:

<Bills>
<name>Test</name>
<category>Power</category>
</Bills>

<Bills>
<name>Test2</name>
<category>Water</category>
</Bills>

所以现在我需要加入这两个 xml 文件并从 Bills 节点获取包含类别值的所有 Company 节点。

我有这个问题:

Xdocument fRoot = XDocument.Load("company.xml");
Xdocument rRoot = XDocument.Load("bills.xml");

var query = from f in fRoot.Elements("Company")
                        join r in rRoot.Elements("Bills")
                        on (string)f.Element("category").Value equals (string)r.Element("category").Value 
                        orderby(string)f.Element("name").Value
                        select new{...}

这样我什么也得不到,因为公司节点类别值以逗号分隔存储,我不知道如何拆分它们以在这两个文件上执行 JOIN。

谢谢。

【问题讨论】:

  • 您的问题含糊不清。加入文件的真正含义是什么?您想合并它们并生成单独的条目吗?澄清您的问题的最佳方法是对其进行编辑并包含您预期输出的示例,然后人们将能够为您提供帮助。
  • 顺便说一句,您不需要将XElement.Value 转换为字符串,因为它是一个字符串。

标签: c# linq-to-xml


【解决方案1】:

你可以试试这样的:

var query = from f in fRoot.Elements("Company")
    from r in rRoot.Elements("Bills")
    where ((string)f.Element("category").Value).Split(',').Contains((string)r.Element("category").Value )
    orderby(string)f.Element("name").Value
    select new new{...};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2012-01-06
    相关资源
    最近更新 更多