public async Task <IActionResult> Index(int page) { Func <ExampleData, int> getFirstBit = n => int.Parse(n.PantoneValue.Split('-')[0]); var exampleData = await ExampleHelper.FetchExample(10, page); var group1 = exampleData.Data.Where(n => getFirstBit(n) % 3 == 0) .OrderBy(n => n.Year).ToList(); var group2 = exampleData.Data.Where(n => getFirstBit(n) % 3 != 0 && getFirstBit(n) % 2 == 0 ) .OrderBy(n => n.Year).ToList(); var group3 = exampleData.Data.Where(n => getFirstBit(n) % 3 != 0 && getFirstBit(n) % 2 != 0 ) .OrderBy(n => n.Year).ToList(); (List <ExampleData> Group1, List <ExampleData> Group2, List <ExampleData> Group3, PagingModel paging)result = ( group1, group2, group3, new PagingModel() { Current = page, PageCount = exampleData.TotalPages } ); return(View(result)); }