var doc = XDocument.Parse(inputXML);
当“amount”节点不存在时,这会爆炸。如何在评估之前检查是否存在?
decimal amt;
var amount = doc.Descendants("amount").SingleOrDefault().Value;
bool amountValid = decimal.TryParse(amount, out amt);
在评估之前,我需要确保“金额”可用。
有人可以帮忙吗?
全部谢谢, 〜在圣地亚哥
答案 0 :(得分:2)
XElement为大多数值类型提供explicit casts,包括Nullable<Decimal>
:
var amt = (decimal?)doc.Descendants("amount").SingleOrDefault();
从那里,您可以检查amt
是null
还是使用HasValue
属性。
更新:值得注意的是,如果值不是FormatException
,则广告会投放Decimal
。如果您仍想使用TryParse
,则可以使用string
强制转换来保持代码简单:
decimal amt;
var amount = (string)doc.Descendants("amount").SingleOrDefault();
bool amountValid = decimal.TryParse(amount, out amt);
在内部,字符串强制转换与Ben的示例类似,返回null
或element.Value
。
答案 1 :(得分:1)
试试这个:
var amountElement = doc.Descendants("amount").SingleOrDefault();
if (amountElement != null)
{
decimal amt;
bool amountValid = decimal.TryParse(amountElement.Value, out amt);
// other code
}