Как я могу фильтровать dataTable с Linq в datatable?

Привет, как я могу фильтровать datatable с linq для datatable? У меня есть DropDownList, и там я могу выбрать значение Modul Column. Теперь я хочу отфильтровать DataTable с помощью этой Modul Column.

вот моя структура данных:

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);
}

Ответ 1

Вам лучше использовать метод 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);

Ответ 2

Вы можете использовать условие для проверки наличия строк еще до кастинга. Пространство имен System.Linq требуется для работы Any()

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

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