Я новичок в LINQ, поэтому следующее может оказаться очень простым и очевидным, когда на него дан ответ, но я должен признать, что этот вопрос пинает меня в задницу.
Учитывая этот XML:
<measuresystems>
<measuresystem name="SI" attitude="proud">
<dimension name="mass" dim="M" degree="1">
<unit name="kilogram" symbol="kg">
<factor name="hundredweight" foreignsystem="US" value="45.359237" />
<factor name="hundredweight" foreignsystem="Imperial" value="50.80234544" />
</unit>
</dimension>
</measuresystem>
</measuresystems>
Я могу запросить значение коэффициента преобразования между килограммами и американским весом, используя следующую LINQ to XML, но, несомненно, есть способ объединить четыре последовательных запроса в один сложный запрос?
XElement mss = XElement.Load(fileName);
IEnumerable<XElement> ms =
from el in mss.Elements("measuresystem")
where (string)el.Attribute("name") == "SI"
select el;
IEnumerable<XElement> dim =
from e2 in ms.Elements("dimension")
where (string)e2.Attribute("name") == "mass"
select e2;
IEnumerable<XElement> unit =
from e3 in dim.Elements("unit")
where (string)e3.Attribute("name") == "kilogram"
select e3;
IEnumerable<XElement> factor =
from e4 in unit.Elements("factor")
where (string)e4.Attribute("name") == "pound"
&& (string)e4.Attribute("foreignsystem") == "US"
select e4;
foreach (XElement ex in factor)
{
Console.WriteLine ((string)ex.Attribute("value"));
}