LINQ: ottieni l'attributo con qualsiasi spazio dei nomi ma nome specifico
-
08-07-2019 - |
Domanda
Devo essere in grado di ottenere un singolo attributo specifico da un elemento con un nome locale specifico ma qualsiasi spazio dei nomi (se hai familiarità con XMPP capirai perché). Oltre a scrivere i miei metodi di estensione (enumeratore o selezione singola), qualche idea?
Ho il seguente, ma non mi piace per niente:
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>();
modifica: vorrebbe qualcosa del tipo:
string val = (string)elem.Attribute("{*}to");
soluzione:
XAttribute from = elem.Attributes()
.FirstOrDefault(a => a.Name.LocalName == "from");
XAttribute to = elem.Attributes()
.FirstOrDefault(a => a.Name.LocalName == "to");
Soluzione
Se non ti piace la sintassi, puoi usare questa;
elem.Attributes().FirstOrDefault(a=>a.Name.LocalName == "from");
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow