foreach (DataColumn dc in dtNewTable.Columns)
{
if(dtNewTable.ColumnName[18]="MONTH")
{
dc.DataType = typeof(string);
}
}
这里我需要检查一个特定的列名,如果该列名是“MONTH”然后将其数据类型更改为string
任何人都可以告诉我它的语法。
答案 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();