【问题标题】:Filtering columns in datatable过滤数据表中的列
【发布时间】:2015-02-19 03:41:53
【问题描述】:

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

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

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

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

我尝试了上述方法,但它不起作用。我什至尝试过:

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

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

任何帮助表示赞赏。

【问题讨论】:

    标签: c# datatable


    【解决方案1】:

    我想您正在使用DataView.ToTable 方法(所以 OldDT 是 DataView 而不是 DataTable)。
    在这种情况下,您需要传递一个列名数组

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

    【讨论】:

      【解决方案2】:

      你可以使用史蒂夫的答案,如果不喜欢定义一个新数组试试这个:

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

      【讨论】:

      • @JacksonLopes 无论如何你的最终目标并不明确,你为什么要他们在一个字符串中?
      • 谢谢伙计。你的回答对我帮助很大,但由于是史蒂夫给我指路,我不得不标记他的回答。万分感谢。干杯!!!
      【解决方案3】:
      DataTable.DefaultView.ToTable(bool, Params string[] ColumnNames);
      

      上述方法基于现有DataView 中的行创建并返回一个新DataTable

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

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

      【讨论】:

        猜你喜欢
        • 2016-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多