public bool Satisfies(string filterValue, IncrementalFilteringMode filteringMode) { switch (filteringMode) { case IncrementalFilteringMode.StartsWith: return(FilterKey.StartsWith(filterValue)); case IncrementalFilteringMode.Contains: return(FilterKey.Contains(filterValue)); default: return(true); } }
private void Filter(string actualFilterValue, IncrementalFilteringMode filteringMode) { CurrentFilter = actualFilterValue; var baseDataFiltered = BaseData.Value; if (actualFilterValue.IsNotEmpty()) { var filterValue = actualFilterValue.ToLower(); baseDataFiltered = baseDataFiltered.Where(x => x.Satisfies(filterValue, filteringMode)).ToList(); } ActualData = baseDataFiltered; }
public void ApplyFilter(string actualFilterValue, IncrementalFilteringMode filteringMode, int beginIndex, int endIndex) { Filter(actualFilterValue, filteringMode); Sort(); TruncateToBorders(beginIndex, endIndex); if (beginIndex == 0 && ActualData.IsEmpty()) { var correctFilterValue = FindCorrectFilter(NextFilterValue(actualFilterValue), filteringMode); Filter(correctFilterValue, filteringMode); Sort(); TruncateToBorders(0, endIndex - beginIndex); } ActualDataSource = ActualData.ToSource().ToList(); }
private string FindCorrectFilter(string possibleFilterValue, IncrementalFilteringMode filteringMode) { if (possibleFilterValue.IsEmpty()) { return(null); } var filterValue = possibleFilterValue.ToLower(); if (BaseData.Value.Any(x => x.Satisfies(filterValue, filteringMode))) { return(possibleFilterValue); } return(FindCorrectFilter(NextFilterValue(possibleFilterValue), filteringMode)); }