エンドユーザーがフィルタリング(検索)する必要があるObservableCollectionが約1000個あります。ユーザーは名前または従業員IDで検索できる必要があります。 List ControlはFilteredEmployeesを消費し、Employeesはページのロード時にすべてロードされます。ユーザー入力によるObservableCollectionのフィルタリング
私は現在、それは以下のような設定があります。
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);
}
}
衛生このメソッドの前に処理されます。
これは非常に効率的なにおいをしません。このために2つの方法を使用するか、フィルタリングを処理するためのよりよい方法がありますか?
従業員を変更しない状態にしておきたいので、FilteredEmployeesを完全なリストに再追加することはできません。
どのような種類のあなたのリストコントロールがありますか?それは、フィルタされた従業員をコピーするのではなく、直接それを消費することができればうまくいくだろうが、おそらく1000であってもそれはまったく問題ではない。 –
FilteredEmployees上の通常の古いListBoxバインド – Slipfish