Отложив на время свой исходный вопрос, в своем запросе вы используете:
where(DATEDIFF(mm, tblAccount.[State Change Date], GETDATE()) <= 4
Этот запрос всегда будет вызывать полное сканирование таблицы, поскольку вы сравниваете результат вызова функции спостоянная.Было бы намного лучше, если бы вы сначала вычислили дату, а затем сравнили значение столбца с вычисленным значением, что позволило бы 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;