1) Методы расширения должны быть расположены в сторонних static-классах. Создаем класс static SomeEntityMethodExtensions и внутри пишем что угодно.
2) Используйте IQueryable. C IEnumerable получите туже проблему что у вас и была - выгрузите все на сервер и будете крутить данные в пустую.
public static IQueryable<TEntity> ApplyFiltEntity(this IQueryable<TEntity> entity,
Func<TEntity, string> field, string filter)
{
return entity.Where(x => field(x).Contains(filter));
}
</code >
Однако скорее всего у вас будут проблемы с трансляцией переданной функции. Преобразовать ее в SQL 99% не выйдет