Voici un petit quizz à faire de tête.
class Program
{
static void Main(string[] args)
{
XElement xml = new XElement("Customers",
new XElement("Customer", new XAttribute("LN", "A"), new XAttribute("FN", "a"),
new XElement("Orders",
new XElement("Order", new XAttribute("Price", 100)),
new XElement("Order", new XAttribute("Price", 150)))),
new XElement("Customer", new XAttribute("LN", "B"), new XAttribute("FN", "b"),
new XElement("Orders",
new XElement("Order", new XAttribute("Price", 200)),
new XElement("Order", new XAttribute("Price", 250)))));
var q = (from c in xml.Descendants("Customer")
let c2 = new C
{
LN = c.Attribute("LN").Value,
FN = c.Attribute("FN").Value
}
select new
{
Customer = c2,
Orders = (from o in c.Descendants("Order")
select new O {
Price = decimal.Parse(o.Attribute("Price").Value),
C = c2 })
});
var customers = (from c in q
select c.Customer).ToList();
var orders = (from co in q
from o in co.Orders
select o).ToList();
foreach (var c in customers)
Console.WriteLine(c.Orders.Count);
Console.ReadLine();
}
}
class C
{
private List<O> _orders;
public C()
{
Id = Guid.NewGuid();
}
public Guid Id { get; private set; }
public string LN { get; set; }
public string FN { get; set; }
public List<O> Orders
{
get
{
if (_orders == null)
_orders = new List<O>();
return _orders;
}
}
}
class O
{
private C _c;
public decimal Price { get; set; }
public C C
{
set
{
if (_c != null)
_c.Orders.Remove(this);
_c = value;
if (value != null)
{
CId = value.Id;
value.Orders.Add(this);
}
}
}
public Guid CId { get; private set; }
}
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :