Вы его возможно неправильно готовите.
Вот пример работающий (как раз под рукой был объект пользовательский)
Код:
public void TestFilters(Context context)
{
var Settings = (EntitySettings)context.GetSettingsFor (c => c.Servis);
Settings.FilterQuery = "BiznesServis =true";
Settings.Save ();
var allServices = EntityManager<ITServis>.Instance.FindAll();
Console.WriteLine("all services list");
foreach(var item in allServices)
{
Console.WriteLine(string.Format("Id= {0} BS= {1}", item.Id, item.BiznesServis));
}
Console.WriteLine("filtered services list");
var filteredServices = EntityManager<ITServis>.Instance.Find(Settings.FilterQuery);
foreach(var item in filteredServices)
{
Console.WriteLine(string.Format("Id= {0} BS= {1}", item.Id, item.BiznesServis));
}
context.Servis = filteredServices.FirstOrDefault();
}
all services list
Id= 1 BS= True
Id= 2 BS= True
Id= 3 BS= False
Id= 4 BS= True
Id= 5 BS= True
Id= 6 BS= True
filtered services list
Id= 1 BS= True
Id= 2 BS= True
Id= 4 BS= True
Id= 5 BS= True
Id= 6 BS= True
Как видно во втором выводе отфильтрован 1 объект.
Касательно кривизны -вкусовщина. Фильтр это не выбранные объекты, это именно фильтр. Для облегчения понимания представьте себе что вы поставили сеть в реке которая отберет вам рыбу нужного размера. Сеть есть, река есть, известно даже какая попадется первой если есть точная модель реки, но это не значит что у вас есть рыба. Если это надо можно принудительно её засунуть в сеть что мы и делаем вторым кусочком кода.
Фильтр действует пока не измените его в другом участке кода.