public async Task <IActionResult> Create([Bind("Index, SearchCriteria, SearchClass, Field, SearchValue, AndOr")] PatientSearchViewModel[] patientSearchViewModel) { for (var index = 0; index < patientSearchViewModel.Count(); index++) { var criteria = patientSearchViewModel[index]; criteria.Index = index.ToString(); if (index == 0) { criteria.AndOr = "AND"; criteria.Predicate = PredicateBuilder.True <Patient>(); } else { criteria.AndOr = Request.Query["PatientSearchViewModel[" + index + "].AndOr"]; if (criteria.AndOr == "AND") { criteria.Predicate = PredicateBuilder.True <Patient>(); } else { criteria.Predicate = PredicateBuilder.False <Patient>(); } } } var patients = await _aspergillosisContext.Patients .Include(p => p.PatientDiagnoses). ThenInclude(d => d.DiagnosisType) .Include(p => p.PatientDrugs). ThenInclude(d => d.Drug) .Include(p => p.PatientDiagnoses) .ThenInclude(d => d.DiagnosisCategory) .Include(p => p.PatientDrugs) .ThenInclude(d => d.SideEffects) .ThenInclude(se => se.SideEffect) .Include(p => p.PatientStatus) .Include(p => p.STGQuestionnaires) .Include(p => p.PatientSurgeries) .Include(p => p.PatientAllergicIntoleranceItems) .Where(PatientSearchViewModel.BuildPredicate(patientSearchViewModel)) .ToListAsync(); return(Json(patients)); }