检查linq新对象中的空字段

时间:2017-01-04 13:00:05

标签: c# linq

我有这段代码:

command = new SqlCommand(query, connection);
reader = command.ExecuteReader();

var dataTable = new DataTable();
dataTable.Load(reader);

reader.Close();
connection.Close();

var data2 = dataTable.AsEnumerable().Select(x => new {
     Datetime = x.Field<DateTime>("Datetime"),
     Tagname = x.Field<String>("Tagname"),
     Value = x.Field<Double>("Value")
});

Value字段为null时,它会在投射过程中抛出异常。我怎么能防止这个例外?

2 个答案:

答案 0 :(得分:8)

nulldouble

的无效值

使其可为空(如果Value的类型可以为空或可以更改为

Value = x.Field<double?>("Value"); 

或定义在null的情况下使用的默认值(例如,如果null则为0)

Value = x.Field<double?>("Value") ?? 0;

答案 1 :(得分:0)

使用x.Field(&#34; Value&#34;)代替x.Field(&#34; Value&#34;)

 var data2 = dataTable.AsEnumerable().Select(x => new {
        Datetime = x.Field<DateTime>("Datetime"),
        Tagname = x.Field<String>("Tagname"),
        Value =   x.Field <Double?>("Value")

    });