Как можно использовать QueryOver для фильтрации по определенному классу?

В настоящее время я динамически создаю запросы, например, так:

QueryOver<Base, Base> q = QueryOver.Of<Base>();

if (foo != null) q = q.Where(b => b.Foo == foo);
// ...

Теперь есть несколько сопоставленных подклассовBase (например,Derived) который я хочу отфильтровать, в основном что-то вроде:

if (bar) q = q.Where(b => b is Derived); // does not work

или же:

if (bar) q = q.Where(b => b.DiscriminatorColumn == 'derived'); // dito

Как мне лучше всего достичь этого, предпочтительно - но не обязательно - безопасным для типов способом? Можно ли это сделать с помощью LINQ?

Ответы на вопрос(2)

Ваш ответ на вопрос