static IEnumerable<XElement>
ChunkedDataSourceReader(String uri, String chunkElement) {
XmlReaderSettings settings = new XmlReaderSettings();
XmlReader xr = XmlReader.Create(uri, settings);

while (xr.Read()) {
if ((xr.NodeType == XmlNodeType.Element)
&& (xr.Name == chunkElement)) {
// pouze pro ladn a demonstran ely
Console.WriteLine("Natn dvky elementu z datovho zdroje.");
yield return XElement.ReadFrom(xr) as XElement;
}
}
}

static void createEntitiesFromXmlUsingChunkingReader() {
var xmlCustomers =
	ChunkedDataSourceReader("customersWithOrdersDataSource.xml",
		"customer");

Console.WriteLine("Promnn xmlCustomers nadefinovna");

var customersWithOrders =
from c in xmlCustomers
select new Customer {
Name = (String)c.Attribute("name"),
City = (String)c.Attribute("city"),
Country = (Countries)Enum.Parse(typeof(Countries),
	(String)c.Attribute("country"), true),
Orders = (
from o in c.Descendants("order")
select new Order {
IdOrder = (Int32)o.Attribute("id"),
IdProduct = (Int32)o.Attribute("idProduct"),
Quantity = (Int32)o.Attribute("quantity"),
Month = (String)o.Attribute("month"),
Shipped = (Boolean)o.Attribute("shipped"),
}
).ToArray()
};

Console.WriteLine("Dotazovac vraz LINQ nadefinovn");

foreach (Customer c in customersWithOrders) {
Console.WriteLine(c);
foreach (Order o in c.Orders) {
	Console.WriteLine(" {0}", o);
}
}
}
