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

时间:2015-03-23 10:44:58

标签: c# asp.net sql-server linq

我正在尝试使用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列,并在该列中插入最后一个日期,它给出了准确的答案但是它包含空值,导致错误

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

希望你的建议

先谢谢

2 个答案:

答案 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();