Это ответвление этого вопроса Stuck on basic Linq to XML queryОчистка XML LINQ запрос
Я пытаюсь получить лучше писать LINQ и узнать о LINQ к XML. Запрос LINQ возвращает ожидаемые результаты, но код не выглядит чистым. Есть ли лучший способ написать это?
XML
<ApiResponse xmlns="http://api.namecheap.com/xml.response" Status="OK">
<Errors/>
<Warnings/>
<RequestedCommand>namecheap.domains.check</RequestedCommand>
<CommandResponse>
<DomainCheckResult Domain="gooaagle.com" Available="true"/>
</CommandResponse>
<Server>WEB1-SANDBOX1</Server>
<GMTTimeDifference>--4:00</GMTTimeDifference>
<ExecutionTime>0.859</ExecutionTime>
</ApiResponse>
C#
XNamespace ns = "http://api.namecheap.com/xml.response";
var response = (
from r in doc.Elements()
select new
{
Errors = r.Element(ns + "Errors").Value,
Warnings = r.Element(ns + "Warnings").Value,
RequestedCommand = r.Element(ns + "RequestedCommand").Value,
CommandResponse = new
{
Domain= r.Element(ns + "CommandResponse").Element(ns + "DomainCheckResult").Attribute("Domain"),
Available = r.Element(ns + "CommandResponse").Element(ns + "DomainCheckResult").Attribute("Available")
},
Server = r.Element(ns + "Server").Value
});