EnumerableRowCollection<DataRow> query; if (checkType && checkCategory) query = from c in dtMax4SaleLimits.AsEnumerable() where ((2 == c.Field<Byte>("type") && lsn_cat == c.Field<String>("lsn_cat")) || (3 == c.Field<Byte>("type") && lessontype == c.Field<Int32>("lessontype"))) && (c.Field<DateTime?>("start_time") < ending_time && c.Field<DateTime?>("end_time") > begin_time) select c;I actually need to do it without the last condition for dates first and get the count. Then, if the count is greater than 0 I will run a loop and add extra conditions for time (time condition is the same, but ending_time and begin_time variables change).