Вы не используете linq для объектов.NHibernate.Linq является провайдером Linq.
Это означает - ему нужно знать, как перевести Ваш предикат в действительный SQL .
Теперь спроситеУ вас есть вопрос - как все базы данных, которые поддерживает nhibernate, могли когда-либо знать о преобразовании типов .net?
Извините, думаю, мне понадобится немного больше указателя, чем этот.Поможет ли более полный пример кода?
Как я понимаю - вы пытаетесь достичь невозможного.Я не могу предоставить пример кода, который бы разрешил вашу проблему, потому что я понятия не имел, какова ваша настоящая цель.все, что я вижу, это то, что вы используете технологию неправильно.
NHibernate.Linq может переводить в выражения SQL, такие как
orders.Any(o=>o.Customers.Any(c=>c.IsDead)).Where(o=>o.Price==10)
Но он не может перевестив выражения SQL как
orders.Where(o=>{Console.WriteLine("foo"); MsgBox("bar"); return false;})