Учитывая два XML-файлы, как эти:C# LINQ к XML: как присоединиться к 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");
С этим я не могу получить данные «Алиса» и «Яблоко». Результат таков:
<Result>
<Join>
<Customer CustomerID="alc" />
<Order OrderID="001" CID="alc" />
</Join>
</Result>
Я думаю, что, может быть, в (string)customer.Element("Customer")
и (string)order.Element("Order")
есть некоторые проблемы, и я не знаю, как изменить их.
Отлично! Благодаря!! –