我正在尝试使用Date列中的最后一次更新DATE,我的代码是
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
{
}
}
它的一部分代码只是从DATE列的数据库中获取第4列,并在该列中插入最后一个日期,它给出了准确的答案但是它包含空值,导致错误
如何在获取日期时跳过该列中的空值?
希望你的建议
先谢谢
答案 0 :(得分:3)
首先尝试在where条件中检查空值。
将Datetime更改为可以为空的DateTime?检查nullvalues是否有效。
var LastUpdate = ds.Tables[0].AsEnumerable().Where(r => r.Field<DateTime?>(col.ColumnName) != null).Max(r => r.Field<DateTime>(col.ColumnName));
答案 1 :(得分:1)
正如abeldenibus所说,你应该在where条件中过滤掉空值但Field扩展方法不适合这个任务。
var LastUpdate = tbl.AsEnumerable()
.Where(r => !r.IsNull(col))
.Max(r => r.Field<DateTime>(col));
date = LastUpdate.ToString();