【问题标题】:How do I filter a generic list in .Net2.0?如何过滤 .Net2.0 中的通用列表?
【发布时间】:2010-07-05 12:42:33
【问题描述】:

我正在使用 asp.net 2.0 和 C#。

我有一个通用列表,

List<EmployeeInfo> empInfoList; 

此列表加载了员工信息。现在,我想用文本框值过滤这个列表。哪个是“员工姓名”。

我必须使用employeeName 过滤此列表,然后再次将其绑定到gridview。

我不确定我该怎么做。请帮忙。

提前致谢。

【问题讨论】:

    标签: c# asp.net-2.0 generic-list


    【解决方案1】:

    当您使用 .Net2.0 时,您不能使用 LINQ,但是您可以使用委托和 FindAll 方法:

    string criteria = EmployeeName.Text.Trim().ToLower();
    List<EmployeeInfo> resultList = empInfoList.FindAll(
       delegate(EmployeeInfo p)
       {
          return p.EmployeeName.ToLower().Contains(criteria);
       }
    );
    

    【讨论】:

    • 与foreach循环相比有哪些优缺点?
    • @Arseny - 在这里阅读:stackoverflow.com/questions/674632/…
    • 对我来说似乎很完美,但我在结果列表中得到了 Null 记录。当我在那里放置断点时,我发现它不会进入代表的内部分支。但我的 empInfoList 有 24 条记录。请提出建议。
    • 我认为代理内部的中断不会受到影响,除非您从与 FindAll 位于同一行的换行符进入代理。我不明白你为什么得到空记录,因为 FindAll 只返回匹配的记录......你能发布一些你尝试过的代码吗?
    • List empInfoList = objCustomer.GetEmployees(user.PasswordQuestion, ref errorMsg); List resultList = empInfoList.FindAll( delegate(EmployeeInfo p) { return p.Name == txtSearchEmployee.Text.Trim(); } ); grvEmployees.DataSource = 结果列表; grvEmployees.DataBind();
    猜你喜欢
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    相关资源
    最近更新 更多