从DataTable返回特定列名的行 - C#

时间:2012-05-08 15:32:24

标签: c# asp.net visual-studio-2010 c#-4.0

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

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

非常感谢。

3 个答案:

答案 0 :(得分:0)

你这样做的顺序错误,只需这样做: Datatable.rows(0 //其计数).item(“列名”); 您可以使用foreach循环它并制作一个列表

答案 1 :(得分:0)

有几种方法可以实现这一目标。我建议使用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");

答案 2 :(得分:0)

你应该尝试这样的事情

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

我希望这对你有用。