Этот запрос всегда вызывает полное сканирование таблицы, поскольку вы сравниваете результат вызова функции с константой. Было бы намного лучше, если вы сначала вычислите свою дату, а затем сравните значение столбца с вычисленным значением, что позволит SQL использовать индекс для поиска результатов вместо того, чтобы оценивать каждую запись в вашей таблице.
Похоже, вы пытаетесь получить что-либо за последние 4 месяца, поэтому в своем коде приложения попробуйте рассчитать дату, которую вы можете сравнить с первой, и передайте это значение в выражение Linq2Entities:
DateTime earliestDate = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1).AddMonths(-4);
var results = from t in context.table1
where t.col3 >= earliestDate
select t;