如何根据输入字符串对dataview进行排序?

时间:2013-04-29 04:09:30

标签: c# sorting dataview

我有员工姓名的数据视图。当我在过滤框中输入“na”时,它会出现这个结果。过滤并排序ASC订单。

Amina
Anna
Masud Rana
Nasima

但我希望它根据我的输入字符串“na”排序。预期结果是这样的

Nasima
Anna
Amina
Masud Rana

thnx任何建议:)

1 个答案:

答案 0 :(得分:0)

  1. 使用Intellisense for 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;
    }
    

    这将使用filter参数(在您的情况下为“na”)

    对数据进行排序
    //ColumnName is EmployeeName In your Case and filter text is txtSearchValue.Text   
    DataTable dt2 = table.Sort("ColumnName", txtSearchValue.Text); 
    DataView dv = dt2.DefaultView;
    
  2. 您的要求可以通过其他方法满足,并且使用Lambda Expression可以在非常小的代码中使用

    DataTable dt3 = table.Rows.Cast<DataRow>().OrderBy(s => Convert.ToString(s["ColumnName"]).IndexOf(txtSearchValue.Text)).CopyToDataTable();
    DataView dv = dt3.DefaultView;