var q = from s in dc.Batches
select new
{
s.BatchCode,
s.ID,
CurriculumName = s.Curriculum.Name,
s.Timing.TimingName,
s.Days,
s.Lab.Name,
FacultyName = (s.Person.FirstName + " " + s.Person.LastName),
CurrentModule = s.Module.Name,
s.Module.ModuleInSemesters,
s.Curriculum.ModuleInCurriculums,
s.BatchStartDate,
s.CurrentModuleStartDate,
s.CurrentModuleEndDate,
SemesterName =
(dc.SemesterInCurriculums.
Where(i => i.SemesterID == dc.ModuleInSemesters.Where(c => c.ModuleID == s.CurrentModuleID && c.CurriculumID == s.CurriculumID)
.Select(n => n.SemesterID).FirstOrDefault() && i.CurriculumID == s.CurriculumID)
.Select(o => o.Name).FirstOrDefault()),
TotalStudent = (from n in dc.Students where n.BatchID == s.ID select n.PortalName).Count(),
BatchEndDate = (dc.BatchSchedulings.Where(r => r.BatchID == s.ID).Max(x => x.EndDate))
};
gridControl.DataSource = q.ToList();