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

c# Finding a string from a list that contains the text box text

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

我有 3 名员工:

所有员工都添加到 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

如果我正确理解了你的意图,

一个。你可以使用 Lambda expression 这几天学习这不是一个坏习惯。
b。请注意我对你逻辑的评论。
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();
}