【问题标题】:Check if DataRow exists by column name in c#? [duplicate]在c#中按列名检查DataRow是否存在? [复制]
【发布时间】:2011-02-03 13:06:30
【问题描述】:

我想做这样的事情:

   private User PopulateUsersList(DataRow row)
        {
            Users user = new Users();
            user.Id = int.Parse(row["US_ID"].ToString());
            if (row["US_OTHERFRIEND"] != null)
            {
                user.OtherFriend = row["US_OTHERFRIEND"].ToString();
            }
            return user;
        }

但是,我收到一条错误消息,提示 US_OTHERFRIEND 不属于该表。 我想简单地检查它是否不为空,然后设置值。

有没有办法做到这一点?

【问题讨论】:

    标签: c# null datarow


    【解决方案1】:

    您可以使用您的数据表的 DataColumnCollection 来检查该列是否在集合中。

    类似:

    DataColumnCollection Columns = dtItems.Columns;
    
    if (Columns.Contains(ColNameToCheck))
    {
      row["ColNameToCheck"] = "Checked";
    }
    

    【讨论】:

      【解决方案2】:

      你应该试试

      if (row.Table.Columns.Contains("US_OTHERFRIEND"))
      

      我不相信该行本身具有列属性。

      【讨论】:

      • 我在表级别检查了 if (dt.Columns.Contains("US_OTHERFRIEND"))
      • 短版:if (row.HasColumnValue("US_OTHERFRIEND"))
      • 请显示不区分大小写的代码。
      • @crazyTech.. 它已经不区分大小写了。
      【解决方案3】:
      if (drMyRow.Table.Columns["ColNameToCheck"] != null)
      {
         doSomethingUseful;
      {
      else { return; }
      

      虽然DataRow没有列属性,但它确实有一个表可以检查该列。

      【讨论】:

        【解决方案4】:
        if (row.Columns.Contains("US_OTHERFRIEND"))
        

        【讨论】:

        • @Big Endian,DataRow 没有 Columns 属性。
        • 这不起作用... DataRow 行没有 Columns 属性。
        【解决方案5】:

        你可以使用

        try {
           user.OtherFriend = row["US_OTHERFRIEND"].ToString();
        }
        catch (Exception ex)
        {
           // do something if you want 
        }
        

        【讨论】:

        • 这是一种不好的做法,捕获异常的成本很高。
        • 这不是一个好习惯。
        猜你喜欢
        • 2010-11-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-25
        • 1970-01-01
        • 2016-06-09
        • 2011-08-20
        • 2011-03-30
        • 2020-03-20
        相关资源
        最近更新 更多