如何使用字符串数组切割DataTable的列?
How to cut DataTable's Columns by using a string array?
我有一个数据表。如何切出它的列,并return一个新的DataTable?
我正在尝试创建一个具有以下参数的方法:
DataTable dt
.
- 包含一些字段的字符串数组。
它应该看起来像这样:
public static DataTable cutDataTable(DataTable dt, List<string> fileds)
{
DataTable newDt = null;
// processing code...
return newDt
}
没有例外。
如果我没理解错的话,你正试图做这样的事情:
public static DataTable CutDataTable(DataTable dt, IList<string> columnsToRemove,
bool keepData = true)
{
DataTable newDt = (keepData ? dt.Copy() : dt.Clone());
foreach (string colName in columnsToRemove)
{
if (!newDt.Columns.Contains(colName)) continue;
newDt.Columns.Remove(colName);
}
return newDt;
}
用法:
var dt = new DataTable();
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
dt.Columns.Add("Column3");
dt.Columns.Add("Column4");
dt.Rows.Add("1", "2", "3", "4");
var newDt = CutDataTable(dt, new[] { "Column3", "Column4" });
Console.WriteLine("New column count = " + newDt.Columns.Count);
Console.WriteLine("First row data: " + string.Join(",", newDt.Rows[0].ItemArray));
输出:
New column count = 2
First row data: 1,2
您可以使用 DataView.ToTable 方法来达到目的。例如,
var fields = new []{"Age","Id"}; //Fields to be selected.
var result = new DataView(table).ToTable(false, fields);
这将 return 来自源 table 的新数据表,仅包含指定的字段。
我有一个数据表。如何切出它的列,并return一个新的DataTable?
我正在尝试创建一个具有以下参数的方法:
DataTable dt
.- 包含一些字段的字符串数组。
它应该看起来像这样:
public static DataTable cutDataTable(DataTable dt, List<string> fileds)
{
DataTable newDt = null;
// processing code...
return newDt
}
没有例外。
如果我没理解错的话,你正试图做这样的事情:
public static DataTable CutDataTable(DataTable dt, IList<string> columnsToRemove,
bool keepData = true)
{
DataTable newDt = (keepData ? dt.Copy() : dt.Clone());
foreach (string colName in columnsToRemove)
{
if (!newDt.Columns.Contains(colName)) continue;
newDt.Columns.Remove(colName);
}
return newDt;
}
用法:
var dt = new DataTable();
dt.Columns.Add("Column1");
dt.Columns.Add("Column2");
dt.Columns.Add("Column3");
dt.Columns.Add("Column4");
dt.Rows.Add("1", "2", "3", "4");
var newDt = CutDataTable(dt, new[] { "Column3", "Column4" });
Console.WriteLine("New column count = " + newDt.Columns.Count);
Console.WriteLine("First row data: " + string.Join(",", newDt.Rows[0].ItemArray));
输出:
New column count = 2
First row data: 1,2
您可以使用 DataView.ToTable 方法来达到目的。例如,
var fields = new []{"Age","Id"}; //Fields to be selected.
var result = new DataView(table).ToTable(false, fields);
这将 return 来自源 table 的新数据表,仅包含指定的字段。