LINQ: Obter atributo com qualquer namespace mas nome específico
-
08-07-2019 - |
Pergunta
Eu preciso ser capaz obter um único atributo específico de um elemento com um nome local específico, mas qualquer namespace (se você estiver familiarizado com XMPP você vai entender o porquê). Além de escrever meu próprio (recenseador ou selecione individuais) métodos de extensão, todas as idéias?
Eu tenho o seguinte, mas eu não gosto em tudo:
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: gostaria de algo como:
string val = (string)elem.Attribute("{*}to");
Solução:
XAttribute from = elem.Attributes()
.FirstOrDefault(a => a.Name.LocalName == "from");
XAttribute to = elem.Attributes()
.FirstOrDefault(a => a.Name.LocalName == "to");
Solução
Se você não gosta da sintaxe, você pode usar este;
elem.Attributes().FirstOrDefault(a=>a.Name.LocalName == "from");
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow