如何使用Linq将dataTable过滤到数据表?

您好我如何使用linq过滤数据表到数据表? 我有一个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("Modul") == value) .CopyToDataTable(); 

这将基于过滤值创建新的DataTable

如果您使用DataTable.Select

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

在转换之前,您可以使用条件来检查存在的行。 Any.Linq名称空间是Any()工作所必需的

 var rows = values.AsEnumerable().Where (row => row.Field("Status") == action); if(rows.Any()){ DataTable dt = rows.CopyToDataTable(); }