Я не уверен, но я думаю, что вы должны использовать что-то вроде этого:
Expression<Func<PRT ,bool>> whereClause
Insted of:
Func<PRT ,bool> whereClause
Когда вы используете Func <>, сначала получите данныеиз базы данных в память, затем фильтруйте данные в памяти, но если вы используете фильтр Epression <>, отправьте в sql и верните результат.
Также для лучшей производительности вы можете использовать AsNoTracking (), например:
if (whereClause != null) {
query = PRT.Where(whereClause).AsQueryable().AsNoTracking();
} else {
query = PRT.AsQueryable().AsNoTracking();
}
Если вы хотите, чтобы запрос выполнялся только в вашей базе данных без вставки, обновления или удаления результата, лучше использовать AsNoTracking.
Я надеюсь, что это ответ на ваш вопрос.