C # Linq donde fecha entre 2 fechas

Estoy tratando de obtener mi statement de linq para obtener todos los registros entre dos fechas, y no estoy muy seguro de lo que necesito cambiar para que funcione: (a.Start >= startDate && endDate)

 var appointmentNoShow = from a in appointments from p in properties from c in clients where a.Id == p.OID && (a.Start.Date >= startDate.Date && endDate) 

Solo cámbialo a

 var appointmentNoShow = from a in appointments from p in properties from c in clients where a.Id == p.OID && (a.Start.Date >= startDate.Date && a.Start.Date <= endDate) 
 var appointmentNoShow = from a in appointments from p in properties from c in clients where a.Id == p.OID where a.Start.Date >= startDate.Date where a.Start.Date <= endDate.Date 
 var QueryNew = _context.Appointments.Include(x => x.Employee).Include(x => x.city).Where(x => x.CreatedOn >= FromDate).Where(x => x.CreatedOn <= ToDate).Where(x => x.IsActive == true).ToList(); 
  public List gettaskssdata(int? c, int? userid, string a, string StartDate, string EndDate, int? ProjectID, int? statusid) { List tbtask = new List(); DateTime sdate = (StartDate != "") ? Convert.ToDateTime(StartDate).Date : new DateTime(); DateTime edate = (EndDate != "") ? Convert.ToDateTime(EndDate).Date : new DateTime(); tbtask = entity.tbltasks.Include(x => x.tblproject).Include(x => x.tbUser). Where(x => x.tblproject.company_id == c && (ProjectID == 0 || ProjectID == x.tblproject.ProjectId) && (statusid == 0 || statusid == x.tblstatu.StatusId) && (a == "" || (x.TaskName.Contains(a) || x.tbUser.User_name.Contains(a))) && ((StartDate == "" && EndDate == "") || ((x.StartDate >= sdate && x.EndDate <= edate)))).ToList(); return tbtask; }