9

について質問がありDataTableます。データベースからを取得し、DataTableこれらの列の1つに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();

まだ.NET2を使用している場合は、次を使用できます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 results = table.Select("ACTIVATE = 1").CopyToDataTable();

これで目的の結果が得られるはずです。基本的には、SQLのようにデータテーブルをクエリできます。

于 2012-12-04T10:50:10.710 に答える
3

DataTableを使用するだけです。次のように選択します。

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

DataRowオブジェクトの配列を返します。

于 2012-12-04T10:49:23.443 に答える
2
return table;
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();
于 2012-12-04T10:52:07.647 に答える