Как я могу фильтровать 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>();
}