web-dev-qa-db-ja.com

LinqでdataTableをdatatableにフィルタリングするにはどうすればよいですか?

こんにちは、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);
}
17
Tarasov

DataTable.Select メソッドですが、LINQを使用する必要がある場合は、次を試すことができます。

DataTable selectedTable = tb.AsEnumerable()
                            .Where(r => r.Field<string>("Modul") == value)
                            .CopyToDataTable();

これにより、フィルター処理された値に基づいて新しいDataTableが作成されます。

DataTable.Select

string expression = "Modul =" + value;
DataRow[] selectedRows = tb.Select(expression);
40
Habib

キャストを行う前に、条件を使用して行がさらに存在することを確認できます。 System.Linq名前空間はAny()が機能するために必要です

var rows = values.AsEnumerable().Where
            (row => row.Field<string>("Status") == action);

if(rows.Any()){
    DataTable dt = rows.CopyToDataTable<DataRow>();
 }
1