0

我一直试图在网上找到答案,但我正在使用 DataTable,我想根据表中的列名过滤所有行,但我似乎无法让 filterExpression 工作。即使语法错误,这基本上就是我想要它做的......

DataRow[] row = sqlDT.Select(ColumnName = "Foo", "ASC", DataViewRowState.CurrentRows);

非常感谢。

4

3 回答 3

1

有几种方法可以做到这一点。我建议使用 LINQ 过滤行:

sqlDT = sqlDT.AsEnumerable().Where(r => r.Field<string>("ColumnName") == "Foo").CopyToDataTable();

您还可以使用Select方法或DefaultView.RowFilter属性:

//select method
sqlDT = sqlDT.Select("ColumnName = 'Foo'").CopyToDataTable();

//row filter property
sqlDT.DefaultView.RowFilter = "ColumnName = 'Foo'";
sqlDT = sqlDT.DefaultView.ToTable();

编辑

如果您只想过滤掉不需要的列,请使用以下DefaultView.ToTable()方法:

sqlDT = sqlDT.DefaultView.ToTable(false, "Column1", "Column2", "Column3");
于 2012-05-08T15:48:23.867 回答
0

您按错误的顺序执行此操作,只需这样做: Datatable.rows(0//its count).item("column name"); 然后你可以用 foreach 循环它并制作一个列表

于 2012-05-08T15:38:08.923 回答
0

你应该尝试这样的事情

DataRow[] row = sqlDT.Select("ColumnName =' " + Foo + " ' " , "ASC", DataViewRowState.CurrentRows);

我希望这对你有用。

于 2012-05-08T15:53:15.543 回答