public ActionResult List(Models.StudentBest.List vm)
 {
     return(Code.MvcHelper.Post(null, Url.Action("List", new
     {
         searchText = vm.SearchText,
         GradeId = vm.GradeId,
         pageIndex = vm.Page.PageIndex,
         pageSize = vm.Page.PageSize
     })));
 }
        public ActionResult List()
        {
            using (var db = new XkSystem.Models.DbContext())
            {
                var vm = new Models.StudentBest.List();
                vm.GradeList = Basis.Controllers.GradeController.SelectList();
                var classStudentList = db.Table <Basis.Entity.tbClassStudent>()
                                       .Include(d => d.tbStudent)
                                       .Include(d => d.tbClass).ToList();
                var studentBestList = db.Table <Student.Entity.tbStudentBest>()
                                      .Include(d => d.tbStudent).ToList();
                var tb = db.Table <Basis.Entity.tbClass>();

                if (!string.IsNullOrEmpty(vm.SearchText))
                {
                    tb = tb.Where(d => d.ClassName.Contains(vm.SearchText));
                }
                if (vm.GradeId > 0)
                {
                    tb = tb.Where(d => d.tbGrade.Id == vm.GradeId);
                }

                vm.DataList = (from p in tb
                               orderby p.No
                               select new Dto.StudentBest.List()
                {
                    Id = p.Id,
                    No = p.No,
                    ClassName = p.ClassName,
                    ClassTypeName = p.tbClassType.ClassTypeName,
                }).ToPageList(vm.Page);

                foreach (var v in vm.DataList)
                {
                    v.BestStudentCount = studentBestList.Where(d => classStudentList.Where(e => e.tbClass.Id == v.Id).Select(e => e.tbStudent.Id).ToList().Contains(d.tbStudent.Id)).Count();
                    v.StudentCount     = classStudentList.Where(d => d.tbClass.Id == v.Id).Count();
                    if (v.BestStudentCount > 0 && v.StudentCount > 0)
                    {
                        v.PercentAge = Math.Round((decimal)v.BestStudentCount / v.StudentCount * 100, 2) + "%";
                    }
                }

                return(View(vm));
            }
        }