XElement обеспечивает явное приведение для большинства типов значений, включая Nullable<Decimal>
:
var amt = (decimal?)doc.Descendants("amount").SingleOrDefault();
Оттуда вы можете проверить, является ли amt
значением null
или использовать его свойство HasValue
.
Обновление: Стоит отметить, что приведение бросит FormatException
, если значение не равно Decimal
. Если вы все еще хотите использовать TryParse
, вы можете сохранить код простым с помощью string
cast:
decimal amt;
var amount = (string)doc.Descendants("amount").SingleOrDefault();
bool amountValid = decimal.TryParse(amount, out amt);
Внутренне приведение строк реализовано как пример Бена, возвращая либо null
, либо element.Value
.