2009-10-20 13 views
5

Jak przechowywać węzły następujących elementów w słowniku, gdzie int jest wygenerowanym automatycznie kluczem i ciągiem znaków (wartość węzła) przy użyciu LINQ?Konwersja Linq na XML -Dictionary

Elements:

XElement instructors = 
     XElement.Parse(
          @"<instructors> 
           <instructor>Daniel</instructor> 
           <instructor>Joel</instructor> 
           <instructor>Eric</instructor> 
           <instructor>Scott</instructor> 
           <instructor>Joehan</instructor> 
         </instructors>" 
     ); 

partially attempted code is given below :

var qry = from instr in instructors.Elements("instructor") 
where((p,index)=> **incomplete**).select..**incomplete**; 

Jak włączyć mój wybór do Dictionary<int,String>? (Klucz powinien zaczynać się od 1, w Linq znaki zaczynają się od zera).

Odpowiedz

8

Jak o:

var dictionary = instructors.Elements("instructor") 
          .Select((element, index) => new { element, index }) 
          .ToDictionary(x => x.index + 1, 
              x => x.element.Value); 
+1

Tak to działa bardzo dobrze; Dzięki –

+0

Czy napisałeś jakieś specjalne artykuły na temat LINQ? –

+0

Niezupełnie - tyle razy o tym bloguję. –