C# 检查linq新对象中的null字段

C# 检查linq新对象中的null字段,c#,linq,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 { Date

我有以下代码:

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时,它会在转换过程中引发异常。如何防止此异常?

null对于double无效

如果值的类型可为null或可以更改为null,则将其设置为null

Value = x.Field<double?>("Value"); 
null对于double是无效的值

如果值的类型可为null或可以更改为null,则将其设置为null

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

使用x.字段值代替x.字段值

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

    });

使用x.字段值代替x.字段值

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

    });

这取决于如果值为null,您希望发生什么?它应该保持为null还是应该为0,-1?这取决于如果值为null,您希望发生什么?它应该是空的还是应该是0,-1?谢谢@fubo,好的谢谢@fubo,好的