private void LoadXML()
{
List<Report> customerList = new List<Report>();
customerList.Add(new Report() { CustId = 1, name = "Jackson", address = "12th Street" });
customerList.Add(new Report() { CustId = 2, name = "Johnson", address = "15th Main Road" });
List<Report> orderList = new List<Report>();
List<Report> itemList = new List<Report>();
orderList.Add(new Report() { CustId = 1, OrderId = 1, total = 1000, operation = "Placed" });
orderList.Add(new Report() { CustId = 1, OrderId = 2, total = 2000, operation = "Placed" });
orderList.Add(new Report() { CustId = 1, OrderId = 3, total = 3000, operation = "Delivered" });
orderList.Add(new Report() { CustId = 2, OrderId = 4, total = 4000, operation = "Delivered" });
orderList.Add(new Report() { CustId = 2, OrderId = 5, operation = "Removed" });
orderList.Add(new Report() { CustId = 2, OrderId = 6, operation = "Removed" });
itemList.Add(new Report() { OrderId = 1, ItemId = 1, price = 1001 });
itemList.Add(new Report() { OrderId = 1, ItemId = 2, price = 1002 });
itemList.Add(new Report() { OrderId = 2, ItemId = 3, price = 1003 });
itemList.Add(new Report() { OrderId = 2, ItemId = 4, price = 1004 });
itemList.Add(new Report() { OrderId = 3, price = 1005 });
itemList.Add(new Report() { OrderId = 3, price = 1006 });
itemList.Add(new Report() { OrderId = 4, price = 1007 });
itemList.Add(new Report() { OrderId = 4, price = 1008 });
itemList.Add(new Report() { OrderId = 5 });
itemList.Add(new Report() { OrderId = 5 });
itemList.Add(new Report() { OrderId = 6 });
itemList.Add(new Report() { OrderId = 6 });
XElement xmlstring = new XElement("Root",
new XElement("CustomerDetail",
customerList.Select(x => new XElement("Customer",
new XElement("Id", "CUST000" + x.CustId),
new XElement("Name", x.name),
new XElement("Address", x.address)))),
new XElement("OrderDetail", orderList.Any(x => x.operation == "Placed") ?
AddTag(orderList.Where(s => s.operation == "Placed").ToList(), itemList, "Placed") : null,
orderList.Any(x => x.operation == "Delivered") ?
AddTag(orderList.Where(s => s.operation == "Delivered").ToList(), itemList, "Delivered") : null,
orderList.Any(x => x.operation == "Removed") ?
AddTag(orderList.Where(s => s.operation == "Removed").ToList(), itemList, "Removed") : null));
System.Console.WriteLine(xmlstring.ToString());
}
private XElement AddTag(List<Report> order, List<Report> item, string operation)
{
return new XElement(operation,
order.Select(x =>
new XElement("Order",
operation == "Placed" ?
new XElement("CustomerId", "CUST000" + x.CustId) : null,
new XElement("OrderId", "ORDER000" + x.OrderId),
operation != "Removed" ?
new XElement("Total", x.total) : null,
operation == "Placed" ?
item.Where(y => y.OrderId == x.OrderId).Select(z =>
new XElement("Item",
new XElement("ItemId", "ITEM000" + z.ItemId),
new XElement("Price", z.price))) : null)));
}
[Edit]Code block added[/Edit]