gpt4 book ai didi

c# - 通过用户输入过滤 ObservableCollection

转载 作者:太空狗 更新时间:2023-10-29 21:48:03 26 4
gpt4 key购买 nike

我有一个包含大约 1000 个对象的 ObservableCollection,最终用户需要对其进行过滤(搜索)。用户必须能够按姓名或员工 ID 进行搜索。列表控件使用 FilteredEmployees,而 Employees 在页面加载时加载了所有内容。

我目前是这样设置的:

public ObservableCollection<EmployeeServicesData> Employees { get; set; }
public ObservableCollection<EmployeeServicesData> FilteredEmployees { get; set; }

internal void FilterEmployee(string searchText, bool isByName)
{
if (searchText.Length > 0)
{
IEnumerabe<EmployeeServicesData> filter;

if (isByName)
filter = Employees.Where(x => x.Name.Length >= searchText.Length).Where(x => x.Name.Substring(0, searchText.Length) == searchText.ToUpper());
else
filter = Employees.Where(x => x.EmployeeNumber.ToString().Length > searchText.Length).Where(x => x.EmployeeNumber.ToString().Substring(0, searchText.Length) == text);

foreach (EmployeeServicesData employee in filter)
FilteredEmployees.Add(employee);
}
}

在此方法之前处理卫生。

这闻起来不是很有效。我应该为此使用两种方法,还是有更好的方法来处理过滤?

我想让 Employees 保持不变状态,这样我就可以将 FilteredEmployees 重新填充到完整列表中,而无需再次访问数据库。

最佳答案

我知道这是一篇旧文章,但我用它来帮助我进行过滤,并注意到 SlipFish 正在通过循环 IEnumerable 集合来创建 ObservableCollection。

由于 ObservableCollection 构造函数接受 IEnumerable 集合,因此可以像这样创建 ObservableCollection:

FilteredEmployees = new ObservableCollection<EmployeeServicesData>(filter);

关于c# - 通过用户输入过滤 ObservableCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1460813/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com