【发布时间】:2018-08-21 09:52:02
【问题描述】:
使用 LINQ-2-XML 读取 xml 文件我有一些可以为空的值(如 Int?和 DateTime?):
//First Example:
DateTime? date = element.XPathSelectElements("dateFrom")
.Where(i => DateTime.TryParse(i.Value, out DateTime dateFrom))
.Select(i => DateTime.Parse(i.Value))
.FirstOrDefault();
//Second Example
Int? myInt = element.XPathSelectElements("integer")
.Select(e => e.Value.ToString())
.Where(e => Int32.TryParse(e, out int tmpInt))
.Select(e => Int32.Parse(e))
.FirstOrDefault();
如果 date 为 null 并且 select-array 为空,linq 返回一个值而不是 null。参考我的示例,myInt 是 0 而不是 null (当我想将其存储在数据库中时,这是一个很大的区别)。
是否可以获取空值而不是“默认值”?
目前我只使用 .First() 并捕获异常。但在我看来,这并不是很干净。
【问题讨论】:
-
能否扩展最后一个
Select以在适用的情况下返回空值? -
@SNO 如果您找到问题的解决方案,您应该在上面添加答案,而不是更新您的问题。你可以回答你自己的问题;-)