public async Task <List <IFile> > GetFiles() { var fromStorage = await _store.GetFiles(); foreach (var file in fromStorage) { FoundFiles.AddOrUpdate(file.PathSha1, file, (k, v) => v = file); } foreach (var dictItem in FoundFiles.Values) { if (!fromStorage.Any(x => x.PathSha1 == dictItem.PathSha1)) { FoundFiles.TryRemove(dictItem.PathSha1, out var deletedItem); } } if (!SearchedAlready) { await RefreshFromFileSystem(); SearchedAlready = true; } return(FoundFiles.Values.ToList()); }