J'ai un IEnumerable <someClass>. J'ai besoin de le transformer en XML. Il existe une propriété appelée "ZoneId". J'ai besoin d'écrire du XML basé sur cette propriété, alors j'ai besoin de quelques éléments décents qui fournissent des données pertinentes pour le ZoneId. Je sais que j'ai besoin d'un type de groupement. Voici ce que j'ai tenté jusqu'ici sans beaucoup de succès. ** L'inventaire est un IEnumerable <someClass>. Je recherche donc l'inventaire pour des zones uniques. Cela fonctionne bien.LinqToXML pourquoi mon objet est-il hors de portée? Aussi devrais-je faire un groupe par?
var zones = inventory.Select(c => new {
ZoneID = c.ZoneId
, ZoneName = c.ZoneName
, Direction = c.Direction
}).Distinct();
Non Je souhaite créer un fichier XML en fonction des zones et des emplacements. *** lieu est une propriété de 'someClass'. Ceci ne compile pas car "station" est hors de portée quand j'essaye d'ajouter l'élément "nom-station". Cependant, je supprime le paren après 'ZoneId', la station est dans la portée et je récupère le nom de la station. Le seul problème est que l'élément est alors un descendant de 'station-id'. Ce n'est pas la sortie désirée. Ils devraient être frères et soeurs. Qu'est-ce que je fais mal? Enfin, après l'élément "nom-station", j'aurai besoin d'un autre type complexe qui est une collection. Appelez-le "lieux" .Il aura des éléments enfants appelés "lieu", ses données proviendront de IEnumerable et je ne veux que des "places" qui ont le "ZoneId" pour la zone actuelle.Quelqu'un peut me pointer dans la bonne direction est-il une erreur de sélectionner des zones distinctes de la IEnumerable? Cet objet a toutes les données que je dois à l'intérieur. Je juste besoin de faire heirarchical. Merci pour tous les pointeurs tous.
Cheers,
originale Chris à San Diego
**** Modifier
var zones = inventory.Select(c => new {
ZoneID = c.ZoneId
, ZoneName = c.ZoneName
, Direction = c.Direction
}).Distinct();
var xml = new XElement("MSG_StationInventoryList"
, zones.Select(station => new XElement("StationInventory"
, new XElement("station-id", station.ZoneID)
, new XElement("station-name", station.ZoneName)
, new XElement("station-travel-direction", station.Direction)
, new XElement("detector-list"
, inventory.Where(p=>p.ZoneId == station.ZoneID).Select(plaza=>
new XElement("detector"
, new XElement("detector-id", plaza.PlazaId)))))));
Cela a fini par travailler.
Je ne suis pas sûr de comprendre le peu de lieux ... pouvez-vous clarifier ce que vous voulez dire? Peut-être donner un exemple? – dtb