Bonjour,
Je debute en LINQ et pas facile de m'en sortir tout seul.
Voici mon probleme:
Je souhaite stocker les dividendes de compagnies dans un fichier XML et via une requête LINQ accéder au dernier dividende de chaque entreprise (c'est à dire au couple (RIC, Ex_Date, AMOUNT, CCY)
Voici comment se presente mon fichier XML:
et voici mon code C#:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <root> <Equity> <Ric>MSFT</Ric> <Dividend> <EX_DATE>2011-02-28</EX_DATE> <AMOUNT>0.25</AMOUNT> <CCY>EUR</CCY> </Dividend> <Dividend> <EX_DATE>2011-02-18</EX_DATE> <AMOUNT>0.15</AMOUNT> <CCY>EUR</CCY> </Dividend> <Dividend> <EX_DATE>2011-02-08</EX_DATE> <AMOUNT>0.01</AMOUNT> <CCY>EUR</CCY> </Dividend> <Dividend> <EX_DATE>2011-01-28</EX_DATE> <AMOUNT>0.05</AMOUNT> <CCY>EUR</CCY> </Dividend> </Equity> <Equity> <Ric>FTE</Ric> <Dividend> <EX_DATE>2011-01-18</EX_DATE> <AMOUNT>0.04</AMOUNT> <CCY>EUR</CCY> </Dividend> </Equity> </root>
Ce qui me sort à la console n'est pas du tout le Ric ni la date escompté mais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 XDocument xdoc = XDocument.Load(@path + "\\_dividend.xml"); var singleDividend = (from p in xdoc.Root.Descendants("Equity") group p by p.Elements("Equity") into g let lastExDate = g.Max(u => u.Element("Dividend").Element("EX_DATE").Value ) select new { Ric = g.Key , Ex_Date = g.Where(u => u.Element("Dividend").Element("EX_DATE").Value == lastExDate) }); foreach (var xe in singleDividend) { Console.WriteLine(xe.Ric ); Console.WriteLine(xe.Ex_Date); }
Merci de m'aiderSystem.Xml.Linq.XContainer+<GetElements>d__11
System.Linq.Enumerable+WhereEnumerableIterator`1[System.Xml.LinqXElement]
Partager