我有一个包含多列的数据表。我想过滤我所做的列:
newDatableName= OldDt.ToTable(false,"col1","col2");
现在假设,我想指定列名称,即将所有列名称放在一个字符串中然后执行:
string colnames= "col1,col2";
newDatableName= OldDt.ToTable(false,colnames);
我尝试了以上但它不起作用。我甚至尝试过:
string colname= "\"col1\",\"col2\"";
但它将列名称字符串视为一列,并给出错误,即不存在此列。
任何帮助表示感谢。
答案 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");