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.