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

C# 从DataTable返回特定列名中的行-C,c#,asp.net,visual-studio-2010,c#-4.0,C#,Asp.net,Visual Studio 2010,C# 4.0,我一直在尝试在线查找答案,但我正在使用DataTable,我想根据表中的列名筛选所有行,但我似乎无法让filterExpression正常工作。尽管语法是错误的,这基本上就是我想要它做的 DataRow[]row=sqlDT.SelectColumnName=Foo,ASC,DataViewRowState.CurrentRows 非常感谢。您按错误的顺序操作,只需这样做: Datatable.rows0//its count.itemcolumn name; 然后,您可以使用foreach循环

我一直在尝试在线查找答案,但我正在使用DataTable,我想根据表中的列名筛选所有行,但我似乎无法让filterExpression正常工作。尽管语法是错误的,这基本上就是我想要它做的

DataRow[]row=sqlDT.SelectColumnName=Foo,ASC,DataViewRowState.CurrentRows


非常感谢。

您按错误的顺序操作,只需这样做: Datatable.rows0//its count.itemcolumn name;
然后,您可以使用foreach循环它,并列出一个列表。有几种方法可以实现这一点。我建议使用LINQ来过滤行:

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

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


你应该试试这样的

DataRow[]row=sqlDT.SelectColumnName='+Foo+',ASC,DataViewRowState.CurrentRows


我希望这对您有用。

您目前有什么代码?它给出了什么错误或问题?仅仅说这种语法是错误的,但大致上是我希望它做的,这对我们没有帮助。总之:我真的没有太多的代码,这更多的是一个你将如何做的问题。我有一个DataTable,我想过滤一个特定列中的值,我将把该列的名称传递给该方法,然后从该列返回这些值的对象。我正在检查DataTable类的Select方法,想知道是否/如何比较列名并仅返回该列的行…类似于Select*FROM ColumnName的SQL语句。感谢您的回复…它是否将ColumnName识别为属性?或者您是指我表中的列的名称?不是,我指的是您表中的列的名称。将ColumnName替换为要筛选的任何列。因此我希望按列筛选,因此我不确定这是否正确?…类似于仅从我的DataTable中选择ColumnName FROM TableName的SQL语句。上面所有示例都是按列筛选的。断开连接的地方在哪里,因为我试图接近您提供的示例代码。您是说希望表只包含您选择的列吗?
//select method
sqlDT = sqlDT.Select("ColumnName = 'Foo'").CopyToDataTable();

//row filter property
sqlDT.DefaultView.RowFilter = "ColumnName = 'Foo'";
sqlDT = sqlDT.DefaultView.ToTable();
sqlDT = sqlDT.DefaultView.ToTable(false, "Column1", "Column2", "Column3");