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:

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>
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
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);
}
Ce qui me sort à la console n'est pas du tout le Ric ni la date escompté mais:

System.Xml.Linq.XContainer+<GetElements>d__11
System.Linq.Enumerable+WhereEnumerableIterator`1[System.Xml.LinqXElement]
Merci de m'aider