c#从包含文本框文本的列表中查找字符串

时间:2017-05-15 18:07:32

标签: c# winforms list flowlayoutpanel

我正在尝试在包含文本框文本的列表中搜索字符串。然后,当它找到记录时,将其添加到流布局面板。它似乎没有正常工作。

我有3名员工:

  • Richard Jacobs
  • Olivia Mularczyk
  • Jess Mularczyk

所有员工都被添加到EmployeeList。

GUI

当我在文本框中输入'R'时,只有Richard出现哪个好!但是当我输入'Ri'时它没有显示出来。当我输入'O'或'Olivia'时,员工也没有出现!

代码:

if (EmployeeTb.Text != string.Empty)
{
    ResultsFLP.Controls.Clear();

    foreach (Cerealto.Classes.Employee Employee in Cerealto.Classes.Employees.EmployeeList)
    {
        if (Employee.firstName.Contains(EmployeeTb.Text))
        {
            ESR = new EmployeeSearchResultUC(Employee.employeeID, Employee.firstName + " " + Employee.lastName);
            ResultsFLP.Controls.Add(ESR);
        }
    }
}
else
{
    ResultsFLP.Controls.Clear();

    foreach (Cerealto.Classes.Employee Employee in Cerealto.Classes.Employees.EmployeeList)
    {
        ESR = new EmployeeSearchResultUC(Employee.employeeID, Employee.firstName + " " + Employee.lastName);
        ResultsFLP.Controls.Add(ESR);
    }
}

我希望你们能帮忙! :d

1 个答案:

答案 0 :(得分:0)

如果我理解你的意图,

一个。您可以使用Lambda expression这不是一个不好的做法来学习这些日子。
湾注意我对你的逻辑的评论 C。如果你想在不考虑用户是否输入小写字母或大写字母(可以产生你在该问题中提出的问题)的情况下进行搜索,也可以使用ToLower()“Ri”不是“rI”而“RI”不是“ ri“等..

if (EmployeeTb.Text != string.Empty)
{
    ResultsFLP.Controls.Clear(); 
    var emp = Cerealto.Classes.Employees.EmployeeList.AsEnumerable().Where(x=> (x.firstName+ " " + x.lastName).ToLower().Contains(EmployeeTb.Text.ToString().ToLower().Trim())).Select(e=>e).ToList();

    if(emp != null)
    {
        foreach(Cerealto.Classes.Employee Employee e in emp)
        {
             ESR = new EmployeeSearchResultUC(e.employeeID, e.firstName + " " + e.lastName);
             ResultsFLP.Controls.Add(ESR);
        }
    }
}
else
{
    // there is no results here clear everything or make no change (dont use the line ResultsFLP.Controls.Clear(); / load all employees again)
    ResultsFLP.Controls.Clear();
}