我如何按列值过滤我的DataTable?

时间:2012-12-04 10:46:33

标签: c# asp.net filter datatable adapter

我对DataTable有疑问。我从数据库中检索DataTable,其中一列包含1或0.现在我只想检索该列中值为1的行。

列的名称为ACTIVATE

这是我的DataTable

DataTable table = new DataTable(TABLE);

//How can I filter here so ACTIVATE == 1?

adapter.Fill(table);

connection.Open();

selectcommand.ExecuteReader();

return table;

4 个答案:

答案 0 :(得分:16)

通过SQL(首选)

SELECT * FROM dbo.Table WHERE ACTIVATE = 1

通过Linq-To-Datatable(在记忆中):

DataTable tblFiltered = table.AsEnumerable()
                             .Where(r => r.Field<int>("ACTIVATE") == 1)
                             .CopyToDataTable();

如果您仍在使用.NET 2,则可以使用DataTable.Select

DataRow[] filteredRows = table.Select("ACTIVATE = 1");

除此之外,您不需要selectcommand.ExecuteReader()填写表格。

DataTable table = new Datatable();
using(var con = new SqlConnection(connectionString))
using(var cmd = new SqlCommand("SELECT * FROM dbo.Table WHERE ACTIVATE = 1", con))
using(var da = new SqlDataAdapter(cmd))
{
    da.Fill( table );
}

答案 1 :(得分:3)

您只需使用DataTable.Select,就像这样:

 foundRows = table.Select("ACTIVATE = '1'");

它返回一个DataRow对象数组。

答案 2 :(得分:2)

DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();

这应该实现你想要的,基本上你可以像SQL一样查询数据表。

答案 3 :(得分:1)

return table;
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();