Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.net获取数据库日期列的最大日期如何避免日期列C中的Null我的代码已附加_C#_Asp.net_Sql Server_Linq - Fatal编程技术网

C# ASP.net获取数据库日期列的最大日期如何避免日期列C中的Null我的代码已附加

C# ASP.net获取数据库日期列的最大日期如何避免日期列C中的Null我的代码已附加,c#,asp.net,sql-server,linq,C#,Asp.net,Sql Server,Linq,我正在尝试获取数据库中日期列中的上次更新日期,我的代码是 if (ds.Tables[0].Rows.Count > 0 && (ds.Tables[0].Rows[0][4].ToString() != null && ds.Tables[0].Rows[0][4].ToString() != "")) { try { DataC

我正在尝试获取数据库中日期列中的上次更新日期,我的代码是

if (ds.Tables[0].Rows.Count > 0 && (ds.Tables[0].Rows[0][4].ToString() != null && ds.Tables[0].Rows[0][4].ToString() != ""))
            {
                try
                {
                    DataColumn col = ds.Tables[0].Columns[4];
                    DataTable tbl = col.Table;
                    var LastUpdate = tbl.AsEnumerable()
                   .Max(r => r.Field<DateTime>(col.ColumnName));
                    date = LastUpdate.ToString();
                    value = date.Split(' ');
                    txtActivatedOn.Text = value[0];
                }
                catch
                {
                }
            }
这是代码的一部分,简单地从数据库中获取第4列,即日期列,并在该列中插入最后一个日期。它给出了准确的答案,但该列包含空值,这将导致错误

如何在获取日期时跳过该列中的空值

希望你的建议


提前感谢

首先尝试在where条件中检查空值

是否将Datetime更改为可为空的Datetime?使空值检查生效

    var LastUpdate = ds.Tables[0].AsEnumerable().Where(r => r.Field<DateTime?>(col.ColumnName) != null).Max(r => r.Field<DateTime>(col.ColumnName));

只需首先尝试在where条件中检查空值

是否将Datetime更改为可为空的Datetime?使空值检查生效

    var LastUpdate = ds.Tables[0].AsEnumerable().Where(r => r.Field<DateTime?>(col.ColumnName) != null).Max(r => r.Field<DateTime>(col.ColumnName));

正如abeldenibus所说,您应该在where条件中过滤掉空值,但字段扩展方法并不适合此任务

var LastUpdate = tbl.AsEnumerable()
    .Where(r => !r.IsNull(col))
    .Max(r => r.Field<DateTime>(col));
date = LastUpdate.ToString();

正如abeldenibus所说,您应该在where条件中过滤掉空值,但字段扩展方法并不适合此任务

var LastUpdate = tbl.AsEnumerable()
    .Where(r => !r.IsNull(col))
    .Max(r => r.Field<DateTime>(col));
date = LastUpdate.ToString();

我认为他只需要检查这个特定列中的null值,而不是检查整个DataRow是否为null。这就是我添加字段扩展的原因。如果我错了,请纠正我,但我认为您的表达式会检查整行是否为null。我认为他只需要检查此特定列中的null值,而不需要检查整行是否为null。这就是我添加字段扩展的原因。如果我错了,请纠正我,但我认为您的表达式会检查整行是否为null。@user802782:是否收到任何可能有用的异常消息?如果值为null,r.Fieldcol.ColumnName将失败。DateTime是一种值类型,不能为null。这是一个很好的观点!我将数据类型更改为可为空的DateTime?所以这不应该再失败了。尽管如此,您的最新答案还是有点优雅:您是否可以发布更多信息,例如异常消息?您也可以尝试Guillaumes尝试。@user802782:您是否收到任何可能有帮助的异常消息?如果该值为null,r.Fieldcol.ColumnName将失败。DateTime是一种值类型,不能为null。这是一个很好的观点!我将数据类型更改为可为空的DateTime?所以这不应该再失败了。尽管如此,您的最新答案还是有点优雅:您是否可以发布更多信息,例如异常消息?你也可以试试纪尧姆。