代码之家  ›  专栏  ›  技术社区  ›  Rod

检查DataTable是否存在列以及是否为null

  •  0
  • Rod  · 技术社区  · 7 年前

    环境:。Net Framework 3.5

    我有一个 DataTable 这可以为数据库中的同一个表返回可变数量的列,我正在检查 exists 如果是这样的话 null 如下所示:

    这是我映射 数据表 entity

    Status = dt.Columns["Status"] != null ? row["Status"] == DBNull.Value ? 0 : Convert.ToInt16(row["Status"]) : 0,
    

    这是很标准的还是我错过了其他的案子?其他更简洁的方式?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Zohar Peled    7 年前

    一切都好起来了 涂鸦 扩展方法:

    public static class DataTableExtensions
    {
        public static T GetValueOrDefault<T>(this DataRow row, string columnName)
        {
            return row.GetValueOrDefault<T>(columnName, default(T));
        }
    
        public static T GetValueOrDefault<T>(this DataRow row, string columnName, T defaultValue)
        {
            return row.Table.Columns[ColumnName] != null && 
                   row[columnName] != DbNull.Value && 
                   row[columnName] is T ? (T)row[columnName] : defaultValue;
        }
    }
    

    用法:

    var Status = row.GetValueOrDefault<Int16>("status");
    

    var Status = row.GetValueOrDefault<Int16>("status", -1);