LINQ: Obtenir un attribut avec n'importe quel espace de nom mais un nom spécifique
-
08-07-2019 - |
Question
Je dois pouvoir obtenir un seul attribut spécifique d'un élément avec un nom local spécifique mais de tout espace de nom (si vous connaissez XMPP, vous comprendrez pourquoi). Mis à part l’écriture de mes propres méthodes d’extension (énumérateur ou sélection unique), des idées?
J'ai les éléments suivants, mais je ne les aime pas du tout:
XAttribute from = (from c in elem.Attributes()
where c.Name.LocalName == "from"
select c).FirstOrDefault<XAttribute>();
XAttribute to = (from c in elem.Attributes()
where c.Name.LocalName == "to"
select c).FirstOrDefault<XAttribute>();
edit: aimerait quelque chose comme:
string val = (string)elem.Attribute("{*}to");
solution:
XAttribute from = elem.Attributes()
.FirstOrDefault(a => a.Name.LocalName == "from");
XAttribute to = elem.Attributes()
.FirstOrDefault(a => a.Name.LocalName == "to");
La solution
Si vous n'aimez pas la syntaxe, vous pouvez utiliser celle-ci;
elem.Attributes().FirstOrDefault(a=>a.Name.LocalName == "from");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow