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;
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 );
}
_
次のように DataTable.Select を使用するだけです。
foundRows = table.Select("ACTIVATE = '1'");
DataRowオブジェクトの配列を返します。
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();
これで目的の結果が得られるはずです。基本的には、SQLのようにデータテーブルをクエリできます。
return table;
DataTable results = table.Select("ACTIVATE = 1").CopyToDataTable();