Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How I can filter my DataTable by Column Value?

I have a question about DataTable. I retrieve a DataTable from the database, and one of these columns contains either a 1 or a 0. Now I want to retrieve only the rows with a 1 value of 1 in that column.

The name of the column is ACTIVATE.

Here is my DataTable:

DataTable table = new DataTable(TABLE);

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

adapter.Fill(table);

connection.Open();

selectcommand.ExecuteReader();

return table;
like image 766
Tarasov Avatar asked Dec 04 '12 10:12

Tarasov


2 Answers

Via SQL (preferred)

SELECT * FROM dbo.Table WHERE ACTIVATE = 1

Via Linq-To-Datatable (in memory):

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

If you're still on .NET 2, you can use DataTable.Select:

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

Apart from that, you don't need selectcommand.ExecuteReader() to fill the table.

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 );
}
like image 133
Tim Schmelter Avatar answered Sep 22 '22 11:09

Tim Schmelter


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

That should achieve what you want, basically you can query data tables much like SQL.

like image 41
Ryan McDonough Avatar answered Sep 23 '22 11:09

Ryan McDonough