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

Tar*_*sov 6 c# asp.net datatable filter 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;
Run Code Online (Sandbox Code Playgroud)

Tim*_*ter 18

通过SQL(首选)

SELECT * FROM dbo.Table WHERE ACTIVATE = 1
Run Code Online (Sandbox Code Playgroud)

Via Linq-To-Datatable(在内存中):

DataTable tblFiltered = table.AsEnumerable()
                             .Where(r => r.Field<int>("ACTIVATE") == 1)
                             .CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

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

DataRow[] filteredRows = table.Select("ACTIVATE = 1");
Run Code Online (Sandbox Code Playgroud)

除此之外,您不需要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 );
}
Run Code Online (Sandbox Code Playgroud)


Rya*_*ugh 5

DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)

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