You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#的DataSet数据行中检查DBMSType键是否存在

检查DataSet行中DBMSType列是否存在的C#实现

直接访问DBMSType列如果不存在会抛出ArgumentException,以下是两种可靠的检查实现方式:

方法一:通过DataTable的Columns.Contains检查列存在性

string filename = @"D:\service\configfile.json";

DataSet data = JsonConvert.DeserializeObject<DataSet>(File.ReadAllText(filename));

if (data.Tables[0].Rows.Count > 0)
{
    DataRow firstRow = data.Tables[0].Rows[0];
    // 先检查表中是否包含目标列
    if (data.Tables[0].Columns.Contains("DBMSType"))
    {
        var n = firstRow["DBMSType"].ToString();
        // 在这里添加获取到值后的业务逻辑
    }
    else
    {
        // 列不存在时的处理逻辑,例如抛出异常、记录日志或设置默认值
        // throw new InvalidOperationException("配置文件中缺少必填的DBMSType列");
    }
}

方法二:结合TryGetValue处理列存在性与值获取

这种方式同时处理列存在性和值是否可获取的场景:

string filename = @"D:\service\configfile.json";

DataSet data = JsonConvert.DeserializeObject<DataSet>(File.ReadAllText(filename));

if (data.Tables[0].Rows.Count > 0)
{
    DataRow firstRow = data.Tables[0].Rows[0];
    object dbmsTypeValue;
    
    // 先确认列存在,再尝试获取值
    if (firstRow.Table.Columns.Contains("DBMSType") && firstRow.TryGetValue("DBMSType", out dbmsTypeValue))
    {
        // 处理可能的null值,避免ToString()抛出空引用异常
        var n = dbmsTypeValue?.ToString() ?? string.Empty;
        // 后续业务逻辑
    }
    else
    {
        // 列不存在或值无法获取时的处理
    }
}

关键说明

  • Columns.Contains("DBMSType")是核心检查逻辑,确保目标列在DataTable中定义
  • 方法二中的TryGetValue还能处理列存在但值为DBNull的情况,同时用?.ToString() ?? string.Empty避免空引用异常

内容的提问来源于stack exchange,提问作者Nasik Ahd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 14:15:25