private async Task Search(string navigationParameter) { if (DataSource == null || DataSource.CurrentStorageFolder == null) { return; } ObservableCollection <ExplorerItem> explorerGroups = new ObservableCollection <ExplorerItem>(); var queryText = navigationParameter; var query = queryText.ToLower(); var items = await DataSource.CurrentStorageFolder.GetItemsAsync(); var itemsFilter = items.Select(item => new { Distance = item.Name.ToLower().Contains(query) ? 1 : Levenshtein.Distance(item.Name.ToLower(), query), Item = item } ).Where(newItem => newItem.Distance >= 0.8).OrderByDescending(newItem => newItem.Distance); foreach (var item in itemsFilter) { if (item.Item is StorageFolder) { explorerGroups.AddStorageItem(item.Item as StorageFolder); } else if (item.Item is StorageFile) { explorerGroups.AddFileItem(item.Item as StorageFile); } } DataSource.FromSearch = true; DataSource.SearchedItems = explorerGroups; }
private async Task Search(string navigationParameter) { if (DataSource == null || DataSource.CurrentStorageFolder == null) return; ObservableCollection<ExplorerItem> explorerGroups = new ObservableCollection<ExplorerItem>(); var queryText = navigationParameter; var query = queryText.ToLower(); var items = await DataSource.CurrentStorageFolder.GetItemsAsync(); var itemsFilter = items.Select(item => new { Distance = item.Name.ToLower().Contains(query) ? 1 : Levenshtein.Distance(item.Name.ToLower(), query), Item = item } ).Where(newItem => newItem.Distance >= 0.8).OrderByDescending(newItem => newItem.Distance); foreach (var item in itemsFilter) { if (item.Item is StorageFolder) explorerGroups.AddStorageItem(item.Item as StorageFolder); else if (item.Item is StorageFile) explorerGroups.AddFileItem(item.Item as StorageFile); } DataSource.FromSearch = true; DataSource.SearchedItems = explorerGroups; }