ChocoPM.ViewModels.AvailablePackagesViewModel.LoadPackages C# (CSharp) 메소드

LoadPackages() 공개 메소드

public LoadPackages ( ) : void
리턴 void
        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;
            }
        }