Я пытаюсь использовать Linq, чтобы получить Guid от стоимости XAttribute ...Возврат Guid Из XLinq значения атрибута, или если Guid.Empty XElement/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 внутри запроса (если это возможно).
Спасибо, но Я думал, что могу использовать DefaultIfEmpty (Guid.Empty) где-то, но я не могу получить свою hea о том, как это будет написано! – user597118
Я редактирую свой ответ, проверяю его –
Я использовал ваш пример и обновил свой вопрос ... спасибо – user597118