如何根据输入字符串对数据视图进行排序
本文关键字:视图 排序 数据 何根 输入 字符串 | 更新日期: 2023-09-27 18:11:21
i创建一个包含Employee Name的数据视图。当我在过滤框中输入"na"时,它会出现这个结果。过滤和排序ASC顺序
Amina
Anna
Masud Rana
Nasima
但我希望它排序根据我的输入字符串"na"。预期结果是这样的
Nasima
Anna
Amina
Masud Rana
-
使用filter排序是不可能直接使用Dataview智能感知中提供的扩展方法,在Dataview中排序结果将只按字母顺序排列。但是,为了满足您的需求,我为DataTable
创建了自己的扩展方法。public static DataTable Sort(this DataTable dt, string ColumnName, string param) { DataTable dtCopy = new DataTable(); List<DataRow> list = dt.Rows.Cast<DataRow>().ToList(); list.Sort((x, y) => Convert.ToString(x[ColumnName]).ToLower().IndexOf(param).CompareTo(Convert.ToString(y[ColumnName]).ToLower().IndexOf(param))); dtCopy = list.CopyToDataTable(); return dtCopy; }
这将使用过滤器参数(在您的示例中为"na")对数据进行排序
//ColumnName is EmployeeName In your Case and filter text is txtSearchValue.Text DataTable dt2 = table.Sort("ColumnName", txtSearchValue.Text); DataView dv = dt2.DefaultView;
-
您的要求可以通过另一种方法来满足,并且通过使用Lambda表达式在非常小的代码中,
DataTable dt3 = table.Rows.Cast<DataRow>().OrderBy(s => Convert.ToString(s["ColumnName"]).IndexOf(txtSearchValue.Text)).CopyToDataTable(); DataView dv = dt3.DefaultView;