Hi mahesh213,
Check this example. Now please take its reference and correct your code.
Controller
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
return View();
}
public ActionResult GenerateXmlReport(string txtOrderId)
{
XElement xml = new XElement("Orders",
from o in GetOrders()
join i in GetItems() on o.OrderId equals i.OrderId
join t in GetTaxes() on i.ItemId equals t.ItemId
where o.OrderId == Convert.ToInt32(txtOrderId)
select new XElement("Order",
new XElement("OrderId", o.OrderId), new XElement("OrderName", o.OrderName),
new XElement("Item", new XElement("ItemId", i.ItemId), new XElement("ItemName", i.ItemName)),
new XElement("Tax", new XElement("TaxId", t.TaxId), new XElement("TaxName", t.TaxName))
)
);
if (!Directory.Exists(Server.MapPath("~/Files/")))
{
Directory.CreateDirectory(Server.MapPath("~/Files/"));
}
xml.Save(Server.MapPath("~/Files/") + "Order.xml");
return File(Server.MapPath("~/Files/") + "Order.xml", "text/xml", "Order.xml");
}
private List<Order> GetOrders()
{
List<Order> orders = new List<Order>();
orders.Add(new Order { OrderId = 1, OrderName = "a" });
orders.Add(new Order { OrderId = 2, OrderName = "b" });
return orders;
}
private List<Item> GetItems()
{
List<Item> items = new List<Item>();
items.Add(new Item { OrderId = 1, ItemId = 1, ItemName = "aa" });
items.Add(new Item { OrderId = 1, ItemId = 2, ItemName = "bb" });
items.Add(new Item { OrderId = 2, ItemId = 3, ItemName = "cc" });
return items;
}
private List<Tax> GetTaxes()
{
List<Tax> taxes = new List<Tax>();
taxes.Add(new Tax { ItemId = 1, TaxId = 1, TaxName = "ff" });
taxes.Add(new Tax { ItemId = 1, TaxId = 2, TaxName = "gg" });
taxes.Add(new Tax { ItemId = 2, TaxId = 3, TaxName = "hh" });
return taxes;
}
public class Order
{
public int OrderId { get; set; }
public string OrderName { get; set; }
}
public class Item
{
public int OrderId { get; set; }
public int ItemId { get; set; }
public string ItemName { get; set; }
}
public class Tax
{
public int ItemId { get; set; }
public int TaxId { get; set; }
public string TaxName { get; set; }
}
}
View
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
@using (Html.BeginForm("GenerateXmlReport", "Home", FormMethod.Post))
{
<input type="text" name="txtOrderId" value="1" />
<input type="submit" name="name" value="Generate report" />
}
</div>
</body>
</html>
Generated XML
<?xml version="1.0" encoding="utf-8"?>
<Orders>
<Order>
<OrderId>1</OrderId>
<OrderName>a</OrderName>
<Item>
<ItemId>1</ItemId>
<ItemName>aa</ItemName>
</Item>
<Tax>
<TaxId>1</TaxId>
<TaxName>ff</TaxName>
</Tax>
</Order>
<Order>
<OrderId>1</OrderId>
<OrderName>a</OrderName>
<Item>
<ItemId>1</ItemId>
<ItemName>aa</ItemName>
</Item>
<Tax>
<TaxId>2</TaxId>
<TaxName>gg</TaxName>
</Tax>
</Order>
<Order>
<OrderId>1</OrderId>
<OrderName>a</OrderName>
<Item>
<ItemId>2</ItemId>
<ItemName>bb</ItemName>
</Item>
<Tax>
<TaxId>3</TaxId>
<TaxName>hh</TaxName>
</Tax>
</Order>
</Orders>