こんにちは、linq to datatableでデータテーブルをフィルタリングするにはどうすればよいですか? DropDownListがあり、モジュール列の値を選択できます。次に、このモジュラー列を使用してDataTableをフィルター処理します。
ここに私のデータテーブル構造があります:
User | Host | TimeDiff | License | Telefon | Modul
ここにコード:
protected void drp_Modules_SelectedIndexChanged(object sender, EventArgs e)
{
string value = drp_Modules.SelectedValue;
DataTable tb = (DataTable)Session["dt_Users"];
tb = from item in tb //?????
LoadUsertable(tb);
}
DataTable.Select
メソッドですが、LINQを使用する必要がある場合は、次を試すことができます。
DataTable selectedTable = tb.AsEnumerable()
.Where(r => r.Field<string>("Modul") == value)
.CopyToDataTable();
これにより、フィルター処理された値に基づいて新しいDataTable
が作成されます。
string expression = "Modul =" + value;
DataRow[] selectedRows = tb.Select(expression);
キャストを行う前に、条件を使用して行がさらに存在することを確認できます。 System.Linq名前空間はAny()が機能するために必要です
var rows = values.AsEnumerable().Where
(row => row.Field<string>("Status") == action);
if(rows.Any()){
DataTable dt = rows.CopyToDataTable<DataRow>();
}