public override void ComposeFilters(IEnumerable <User> users) { var batches = users .SelectMany(u => u.UserCourses.Distinct(new UserCourseComparer())) .Select(u => u.Batch); var currUser = users.SingleOrDefault(u => u.UserId == UserSession.CurrentUserId); if (currUser != null && currUser.UserCourses.Any()) { var tempShowAll = ShowAll; ShowAll = true; ComposeFilterItems(batches); var batch = currUser.UserCourses[0].Batch; var bactchInt = int.Parse(batch); var batch3 = (bactchInt + 2).ToString(); var batch1 = (bactchInt + 1).ToString(); var batch2 = (bactchInt - 1).ToString(); FilterItems = FilterItems .OrderByDescending(f => f.ValueText == batch2) .OrderByDescending(f => f.ValueText == batch3) .OrderByDescending(f => f.ValueText == batch1) .OrderByDescending(f => f.ValueText == batch) .ToList(); if (!tempShowAll) { var finalquery = FilterItems.Take(_dispFilterCnt); var checkedSkiped = FilterItems.Skip(_dispFilterCnt) .Where(l => l.IsChecked); finalquery = finalquery.Concat(checkedSkiped); FilterItems = finalquery.ToList(); } ShowAll = tempShowAll; MasterFilters = FilterItems; } else { ComposeFilterItems(batches); } }