Если вы можете гарантировать, что файл всегда будет иметь соответствующие данные, тогда без проверки типа:
private static Uri GetImageUri(XElement xml, string imageType)
{
return (from i in xml.Descendants("image")
where i.Descendants("imageType").First().Value == imageType
select new Uri(i.Descendants("imagedata").Attribute("fileref").Value)).FirstOrDefault();
}
Если null
проверка является приоритетом (и кажется, что это так):
private static Uri GetSafeImageUri(XElement xml, string imageType)
{
return (from i in xml.Descendants("imagedata")
let type = i.Parent.Descendants("imageType").FirstOrDefault()
where type != null && type.Value == imageType
let attr = i.Attribute("fileref")
select new Uri(attr.Value)).FirstOrDefault();
}
Не уверен, что с проверкой null
вы получите гораздо более краткую информацию, чем
.