public async void LoadPackages()
{
Loading = true;
try
{
var newPackages = await Task.Run(() =>
{
IQueryable<V2FeedPackage> query = _remoteService.Packages.Where(package => package.IsPrerelease == Prerelease || package.IsPrerelease == false);
if (!AllVersions)
query = query.Where(package => package.IsLatestVersion || package.IsAbsoluteLatestVersion);
if (!string.IsNullOrWhiteSpace(SearchQuery))
{
query = Match ?
query.Where(package => package.Id == SearchQuery || package.Title == SearchQuery) :
query.Where(package => package.Id.Contains(SearchQuery) || package.Title.Contains(SearchQuery));
}
TotalCount = query.LongCount();
PageCount = (int)(_totalCount / _pageSize);
if (!string.IsNullOrWhiteSpace(SortColumn))
{
if (_sortColumn == "DownloadCount" && AllVersions)
_sortColumn = "VersionDownloadCount";
if (_sortColumn == "VersionDownloadCount" && !AllVersions)
_sortColumn = "DownloadCount";
query = !SortDescending ? query.OrderBy(this._sortColumn) : query.OrderByDescending(this._sortColumn);
}
query = query.Skip(CurrentPage * PageSize).Take(PageSize);
return query.ToList().Select(package => App.Kernel.Get<PackageViewModel>(new ConstructorArgument("feedPackage", package))).ToList();
});
Packages.Clear();
newPackages.ForEach(Packages.Add);
}
catch
{
throw;
}
finally
{
Loading = false;
}
}