Comment remplir une classe avec un dictionnaire en utilisant LINQ

Dans mon projet, j’utilise un fichier XML pour importer différentes instances d’une classe. J’ai besoin d’importer dans une liste. Le problème est de savoir comment importer tous les “dynamicDrop” dans un dictionnaire:

XML:

 3 70 40 10 33 33 34 70 20 8 2 2 60 100 All All  

Requête XMLImporter:

 var query = from item in xml.Root.Elements("LootProfile") select new LootProfile() { name = (ssortingng)item.Atsortingbute("name"), dynamicDropNumber = (int)item.Element("dynamicDropNumber"), dynamicDrop = (Dictionary)item.Element("dynamicDrop) //this one doesnt work! //other element.... } return query.ToList(); 

Voici comment vous pouvez le faire:

 var query = xml.Elements("LootProfile") .Select(item => new LootProfile() { name = (ssortingng) item.Atsortingbute("name"), dynamicDropNumber = (int) item.Element("dynamicDropNumber"), dynamicDrop = item.Elements("dynamicDrop") .Select((Item, Index) => new {Item, Index}) .ToDictionary(x => x.Index, x => float.Parse(x.Item.Value)) //other element.... }); var result = query.ToList(); 

L’astuce consiste à utiliser une surcharge de Select qui vous donne deux parameters lambda; l’élément lui-même et l’index de l’élément.