>> if (resourceEvent) >> { >> // Remove instructors who don't have anything planned >> var query = dtInstructors.AsEnumerable().Where(c => dtAllScheduled.AsEnumerable().Any(b => 1 == b.Field<Byte>("layer") >> && true==b.Field<Boolean>("schdassign") && c.Field<String>("instr_id")== b.Field<String>("resource_id") >> )); >> query.CopyToDataTable(dtInstructors, LoadOption.OverwriteChanges); >> }>>
DataTable dtInstructorsAll = this.GetDataSet().Tables[0]; DataTable dtInstructors; if (dtInstructorsAll.Rows.Count > 0) { DateTime minDate = Functions.Smallest<DateTime>((DateTime)bRow.StartTime, preferenceStartTime); DateTime maxDate = Functions.Largest<DateTime>((DateTime)bRow.EndTime, preferenceEndTime); DateRange range = new DateRange(minDate, maxDate); // GetPvtSortedResources doesn't not use instructor type where condition while GetPvtSortedSchedule does use it DataTable dtAllScheduled = this.GetAllScheduled(sqlCommand, range, (resourceOnly) ? "" : instructorTypeWhere, resourceEvent); Logging.LogFormat(4, "Number of eligible bookings returned in csrAllSched: {0}", dtAllScheduled.Rows.Count); if (resourceEvent) { // Remove instructors who don't have anything planned dtInstructors = dtInstructorsAll.Clone(); var query = dtInstructorsAll.AsEnumerable().Where(c => dtAllScheduled.AsEnumerable().Any(b => 1 == b.Field<Byte>("layer") && true==b.Field<Boolean>("schdassign") && c.Field<String>("instr_id")== b.Field<String>("resource_id") )); query.CopyToDataTable(dtInstructors, LoadOption.OverwriteChanges); } else { dtInstructors = dtInstructorsAll.Copy(); }So, I originally create a different table and then either copy or clone and CopyToDataTable depending on my condition.