У меня есть 4 файла XML, которые содержат данные в этом формате. Эти данные на самом деле из базы данных Microsoft Northwind, но у меня есть несколько таблиц в формате XML. Полная диаграмма отношений доступна здесь.
Заказы
<Orders>
<Order>
<OrderID>10248</OrderID>
<CustomerID>VINET</CustomerID>
<EmployeeID>5</EmployeeID>
</Order>
.............
.............
.............
Сведения о заказе
<OrderDetails>
<OrderDetail>
<OrderID>10248</OrderID>
<Quantity>12</Quantity>
<UnitPrice>14.0000</UnitPrice>
</OrderDetail>
<OrderDetail>
<OrderID>10248</OrderID>
<Quantity>10</Quantity>
<UnitPrice>9.8000</UnitPrice>
</OrderDetail>
.............
.............
.............
Сотрудники
<Employee>
<EmployeeID>5</EmployeeID>
<FirstName>Steve</FirstName>
<LastName>Buchanan</LastName>
</Employee>
<Employee>
<EmployeeID>6</EmployeeID>
<FirstName>Michael</FirstName>
<LastName>Suyama</LastName>
</Employee>
.............
.............
.............
Клиенты
<Customer>
<CustomerID>VINET</CustomerID>
<CompanyName>Vins et alcools Chevalier</CompanyName>
<ContactName>Paul Henriot</ContactName>
</Customer>
<Customer>
<CustomerID>WANDK</CustomerID>
<CompanyName>Die Wandernde Kuh</CompanyName>
<ContactName>Rita Müller</ContactName>
</Customer>
<Customer>
.............
.............
.............
Теперь я хочу получить список объектов, каждый из которых содержит следующее:
- OrderId (из таблицы Orders — пример — 10248)
- Название компании для указанного выше идентификатора заказа (из таблицы «Клиенты» — пример — Vins et alcools Chevalier)
- Имя контактного лица для указанного выше идентификатора заказа (из таблицы «Клиенты» — пример — Пол Энрио)
- Имя сотрудника для идентификатора сотрудника для соответствующего идентификатора заказа (из таблицы «Сотрудники» — пример — Стив Бьюкенен)
- Общее количество для вышеуказанного идентификатора заказа из таблицы OrderDetails. Это будет 12 + 10 = 22, потому что есть два заказа с идентификатором заказа 10248.
- Общая цена для вышеуказанного идентификатора заказа из таблицы OrderDetails. Это будет 12*14 + 10*9,8 = 266.
Таким образом, один из объектов будет выглядеть так — {10248, Vins et alcools Chevalier, Paul Henriot, Steve Buchanan, 22, 266}
Теперь я могу написать запрос LINQ, чтобы получить идентификатор заказа, имя контакта и название компании, например:
var list = from o in ordersList
join cl in customersList
on o.CustomerId equals cl.CustomerId
select new
{
o.OrderId,
cl.CompanyName,
cl.ContactName
};
Но это дает мне только три вещи. Я изо всех сил пытаюсь получить все 6 вещей, которые необходимы для содержания объекта. Также как выполнить расчет, поскольку один идентификатор заказа в таблице заказов может иметь несколько сведений о заказе. Например, для заказа с идентификатором 10248 у нас есть 2 детали заказа.
Спасибо