Запрос будет выполнен поставщиком данных, который не знает о вычисляемых полях.Что вы можете сделать, это отфильтровать то, что вы хотите через LINQ, ссылаясь на фактические поля, а не рассчитанные.
Например, допустим, сальдо - это рассчитанное вами поле, которое вы определили как Кредит - Дебет (которые являются обычными полями).Вы хотите, чтобы ваш запрос возвращал строки с Balance> 0. Вот как вы бы написали запрос (в событии PreprocessQuery обратите внимание, что нет события ProcessQuery):
partial void TestQuery_PreprocessQuery(ref IQueryable<Customer> query)
{
query = (
from c in query
where ((c.Credit - c.Debit) > 0)
select c);
}
Другой теоретический способ решенияпроблема заключается в установке фильтра в обработчике события Executed.Однако по какой-то причине, когда я это делаю, фильтр не применяется к экрану.Но даже если этот метод будет работать, вы все равно будете фильтровать на стороне клиента, что может оказаться не тем, что вы хотите.