var resultingQuery = from instructors in dtResources.AsEnumerable() join bookings in dtBookingInfo.AsEnumerable() on instructors.Field<String>("resource1") equals bookings.Field<String>("resource1") into AllInfo from bookings in AllInfo.DefaultIfEmpty() select new { resource1 = instructors.Field<String>("resource1"), fname = instructors.Field<String>("fname"), lname = instructors.Field<String>("lname"), CheckedIn = instructors.Field<Boolean>("CheckedIn"), booking_id = bookings==null?(Decimal?)null:bookings.Field<Decimal>("booking_id"), start_time = bookings==null?(DateTime?)null:bookings.Field<DateTime?>("start_time"), end_time = bookings == null ? (DateTime?)null : bookings.Field<DateTime?>("end_time"), flex_tspan = bookings == null ? (Boolean?)null : bookings.Field<Boolean>("flext_tspan"), layer = bookings == null ? (Byte?)null : bookings.Field<Byte>("layer"), backcolor = bookings == null ? (Int32?)null:bookings.Field<Int32>("backcolor"), forecolor = bookings == null ? (Int32?)null : bookings.Field<Int32>("forecolor"), clip_sp = bookings == null ? (String)null : bookings.Field<String>("clip_sp"), clip_loc = bookings == null ? (Byte?)null : bookings.Field<Byte>("clip_loc"), display_msg = bookings == null ? (String)null : bookings.Field<String>("display_msg"), bartype = "PVT", locked = bookings == null ? (Boolean?)null : bookings.Field<Boolean>("locked"), IsNotes = bookings == null ? (Boolean?)null : bookings.Field<Boolean>("IsNotes") };My dtResources table is already sorted the way I need.