public TOut LoadJewelryCollection <TOut>(TOut viewModel) where TOut : ITabsViewModel { var dynamicSQLObject = GetDynamicSQLStringBytabKeyAndID(tabKey, tabId); jewelRepository.Page(page); jewelRepository.ItemsPerPage(itemsPerPage); var jewelMediaType = JewelMediaTypeFilter.Value; jewelRepository.FilterMediaByMetal(jewelMediaType); jewelRepository.OrderJewelryItemsBy(OrderByPriceFilter.DynamicOrderBy()); if (CustomFiltersStateList.Count > 0) { var dynamicSQLList = CustomFiltersStateList.Select(x => ConvertCustomFilterStateToDynamicSQL(x)).ToList(); jewelRepository.AddFilterList(dynamicSQLList); } var jewelList = jewelRepository.GetJewelsByDynamicSQL(dynamicSQLObject); viewModel.JewelryInTabContainersCollection = MapJewelsToInTabContainers(jewelList); var totalItems = jewelRepository.TotalItems; viewModel.TotalPages = CalculateTotalPages(totalItems); return(viewModel); }