我正在尝试在包含文本框文本的列表中搜索字符串。然后,当它找到记录时,将其添加到流布局面板。它似乎没有正常工作。
我有3名员工:
所有员工都被添加到EmployeeList。
当我在文本框中输入'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
答案 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();
}