检查datatable中的特定列名称

时间:2011-01-05 14:41:13

标签: c#

foreach (DataColumn dc in dtNewTable.Columns)
{     
    if(dtNewTable.ColumnName[18]="MONTH")
    {
        dc.DataType = typeof(string);
    }
}

这里我需要检查一个特定的列名,如果该列名是“MONTH”然后将其数据类型更改为string

任何人都可以告诉我它的语法。

7 个答案:

答案 0 :(得分:5)

你走在正确的轨道上......

foreach (DataColumn dc in dtNewTable.Columns) 
{
      if(dc.ColumnName == "MONTH")
      {
           dc.DataType = typeof(string);
      }
}

答案 1 :(得分:2)

foreach (DataColumn dc in dtNewTable.Columns)
{
    if (dc.ColumnName == "MONTH")
    {
        dc.DataType = typeof(String);
    }
}

答案 2 :(得分:1)

尝试

if(dc.ColumnName =="MONTH")
{
  dc.DataType = typeof(String);
}

答案 3 :(得分:1)

试试这个

if (dt.Columns.Contains("MONTH"))
    dt.Columns["MONTH"].DataType = yourDesiredDataTypeHere;

答案 4 :(得分:0)

如果DataTable中有数据,则需要将数据复制到具有预期数据类型的新列。

using System;
using System.Data;

namespace WindowsFormsApplication1
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Month", typeof(int));
            dt.Rows.Add(1);

            if (dt.Columns.Contains("Month"))
            {
                DataColumn originalDataColumn = dt.Columns["Month"];
                DataColumn newDataColumn = dt.Columns.Add("NewMonth", typeof(string));

                foreach (DataRow dr in dt.Rows)
                {
                    dr[newDataColumn] = dr[originalDataColumn].ToString();
                }

                dt.Columns.Remove(originalDataColumn);
                newDataColumn.ColumnName = "Month";
            }
        }
    }
}

答案 5 :(得分:0)

    /// <summary>
    /// Returns true if the given DataTable has the given column name
    /// </summary>
    /// <param name="data">The DataTable you are checking</param>
    /// <param name="columnName">the column name you want</param>
    /// <returns></returns>
    public static bool HasColumn(DataTable data, string columnName)
    {
        if(data == null || string.IsNullOrEmpty(columnName))
        {
            return false;
        }

        foreach(DataColumn column in data.Columns) 
             if (columnName.Equals(column.ColumnName, StringComparison.OrdinalIgnoreCase)) return true;
        return false;
    }

答案 6 :(得分:0)

我们将DataColumnCollection转换为IEnumerable,仅过滤掉符合条件的列,然后批量更改结果列的数据类型。虽然在尝试查找单个实例时可能会过度杀戮,但我对LINQ来说是个傻瓜。

 dtNewTable.Columns.Cast<DataColumn>()
            .Where(x => x.ColumnName.ToLower() == "month")
            .Select(x => { x.DataType = typeof(string); return x; }).ToList();