2011-01-05 3 views
0
foreach (DataColumn dc in dtNewTable.Columns) 
{  
    if(dtNewTable.ColumnName[18]="MONTH") 
    { 
     dc.DataType = typeof(string); 
    } 
} 

здесь мне нужно проверить тио для конкретного ColumnName если имя_столбца является «МЕСЯЦ», а затем изменить его тип данных в строкупроверка для конкретного имени столбца в DataTable

может кто-нибудь сказать мне синтаксис для этого.

ответ

4

Вы были на правильном пути ...

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

Попробуйте

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

Попробуйте

if (dt.Columns.Contains("MONTH")) 
    dt.Columns["MONTH"].DataType = yourDesiredDataTypeHere; 
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"; 
      } 
     } 
    } 
} 
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; 
    } 
0

Мы бросили DataColumnCollection Ань IEnumerable, отфильтровать только те столбцы, которые соответствуют вашим критериям, а затем массу изменить тип данных результирующего столбца. Хотя это может быть больше, когда вы пытаетесь найти один экземпляр, я присоединяюсь к LINQ.

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

Будет оценено какое-то объяснение вместе с вашим кодом. Это всего лишь куча кода – kolossus

Смежные вопросы