过滤数据表中的列

时间:2014-12-20 09:46:55

标签: c# datatable

我有一个包含多列的数据表。我想过滤我所做的列:

newDatableName= OldDt.ToTable(false,"col1","col2");

现在假设,我想指定列名称,即将所有列名称放在一个字符串中然后执行:

string colnames= "col1,col2";
 newDatableName= OldDt.ToTable(false,colnames);

我尝试了以上但它不起作用。我甚至尝试过:

string colname= "\"col1\",\"col2\"";

但它将列名称字符串视为一列,并给出错误,即不存在此列。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:5)

我认为您使用的是DataView.ToTable方法(因此OldDT是DataView而不是DataTable)。
在这种情况下,您需要传递列名称数组

string[] colnames = new string[] {"col1", "col2"};
newDatableName= OldDt.ToTable(false,colnames);

答案 1 :(得分:1)

你可以使用史蒂夫的答案,如果不想定义一个新阵列,试试这个:

string colnames="col1,col2"
newDatableName=OldDt.ToTable(colnames.Split(',');

答案 2 :(得分:0)

DataTable.DefaultView.ToTable(bool, Params string[] ColumnNames);

上述方法根据现有DataTable中的行创建并返回新的DataView

您必须将两个参数传递给此函数。 如果为true,则返回的DataTable包含对其所有列具有不同值的行。默认值为false。 一个字符串数组,包含要包含在返回的DataTable中的列名列表。 DataTable按照它们在此数组中出现的顺序包含指定的列。 例如:

DataTable NewTable = dt.DefaultView.ToTable(false, "StartDate", "FinishDate", "ItemName", "AssigneeNames", "ProjectName", "PercentComplete");