Entity Framework и LINQ to SQL не поддерживают этот сценарий, поскольку перевод MyPredicateExpression должен быть добавлен в транслятор дерева выражений.
Я рекомендую создать хранимую функцию, выполняющую проверку предикатов, и добавить эту функцию в DataContext.В этом случае вы сможете использовать запрос, подобный следующему:
var query = from x in db.MyTable where context.MyPredicateFunction(x.Field) select x;
Обновить. Вот обновленный запрос, который учитывает ваши комментарии:
int[] values = new int[] { 1, 2, 3 };
var query = from x in db.MyTable where values.Contains(x.AuditState) select x;
Обновление 2. Вы можете добавить свойство Queryable в свой контекст, который будет получать необходимый набор объектов MyTable, как показано в следующем примере:
public partial class MyDataContext {
IQueryable<MyTable> GetSpecialTables {
get {
int[] values = new int[] { 1, 2, 3 };
return this.MyTables.Where(x => values.Contains(x.AuditState));
}
}
}
Замените MyDataContext фактическим именем вашего контекста.