9

我有一个关于DataTable. 我DataTable从数据库中检索 a,其中一列包含 1 或 0。现在我只想检索该列中 1 值为 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

4 回答 4

25

通过 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 );
}
于 2012-12-04T10:50:31.950 回答
3

您只需像这样使用DataTable.Select

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

它返回一个 DataRow 对象数组。

于 2012-12-04T10:49:23.443 回答
3
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();

那应该达到你想要的,基本上你可以像SQL一样查询数据表。

于 2012-12-04T10:50:10.710 回答
2
return table;
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();
于 2012-12-04T10:52:07.647 回答