C# LINQ to XML : how to join Xml Data

标签 c# xml linq join

给定两个像这样的 XML 文件:

<Customers>
  <Customer CustomerID="alc">Alice</Customer>
</Customer>

<Orders>
  <Order OrderID="001" CID="alc">apple</Order>
</Orders>

现在我需要连接这两个 XML 文件并使用内部连接创建一个新文件:

<Result>
  <Join>
     <Customer CustomerID="alc">Alice</Customer>
     <Order OrderID="001" CID="alc">apple</Order>
  </Join>
</Result>

我有这个问题:

var result = new XElement("Result",
     from customer in XElement.Load("Customers.xml").Elements("Customer")
        join order in XElement.Load("Orders.xml").Elements("Order")
        on
            (string)customer.Attribute("CustomerID")
        equals
            (string)order.Attribute("CID")
        select new XElement("Join",
               new XElement("Customer", (string)customer.Element("Customer"),
               new XAttribute("CustomerID", (string)customer.Attribute("CustomerID"))),

               new XElement("Order", (string)order.Element("Order"),
               new XAttribute("OrderID", (string)order.Attribute("OrderID")),
               new XAttribute("CID", (string)order.Attribute("CID")))));
result.Save("result.xml");

用这个我无法获得数据“Alice”和“apple”。结果是这样的:

<Result>
  <Join>
    <Customer CustomerID="alc" />
    <Order OrderID="001" CID="alc" />
  </Join>
</Result>

我想也许 (string)customer.Element("Customer")(string)order.Element("Order") 有一些问题,我不知道如何修改这些。

最佳答案

你可以 cast an element to a string获取其文本值:

    select new XElement("Join",
           new XElement("Customer", (string)customer,
           new XAttribute("CustomerID", (string)customer.Attribute("CustomerID"))),

           new XElement("Order", (string)order,
           new XAttribute("OrderID", (string)order.Attribute("OrderID")),
           new XAttribute("CID", (string)order.Attribute("CID")))));

关于C# LINQ to XML : how to join Xml Data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31890713/

相关文章:

c# - 制作 View 模型错误

xml - 对于初学者来说,什么是 JSON 的最佳资源

python - Django 模型中的验证错误

c# - 使用 Linq 对交错数组(求和、平均值、其他函数)进行列操作

c# - 返回空的 linq 表达式

c# - Visual Studio 2010想要将项目作为类库启动

c# - 从 WP8 后台代理引用 WCF 服务

c# - 生成的线程是否以用户身份自动运行?

java - 读取/写入 XML

c# - 通过语句将更多项目添加到组中