Я пытаюсь использовать Linq для получения Guid из значения XAttribute ...
XDocument __xld = XDocument.Parse(
"<Form sGuid='f6b34eeb-935f-4832-9ddc-029fdcf2240e'
sCurrentName='MyForm' />");
string sFormName = "MyForm";
Guid guidForm = new Guid(
__xld.Descendants("Form")
.FirstOrDefault(xle => xle.Attribute("sCurrentName").Value == sFormName)
.Attribute("sGuid").Value
);
Дело в том, что я хотел бы вернуть Guid.Empty, если XAttribute отсутствует или XElement не найден, (или что-то идет не так!) ...
Могу ли я однострочить эту концепцию или мне нужно сначала выполнить запрос, чтобы увидеть, был ли найден XElement с соответствующим sCurrentName и вернуть Guid.Empty, если запрос ничего не возвращает ...
UPDATE
Благодаря Miroprocessor у меня получилось следующее ...
Guid guidForm = new Guid(
(from xle in __xld.Descendants("Form")
where xle.Attribute("sCurrentName") != null && xle.Attribute("sCurrentName").Value == sFormName
select xle.Attribute("sGuid").Value).DefaultIfEmpty(Guid.Empty.ToString()).FirstOrDefault()
);
НО (!) Я думаю, что Guid.Empty.ToString () можно было бы избежать, если бы я мог создать Guid внутри запроса (если это возможно).