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?所以这不应该再失败了。尽管如此,您的最新答案还是有点优雅:您是否可以发布更多信息,例如异常消息?你也可以试试纪尧姆。