провайдер linq не использует Критерии под прикрытием, он использует AST из парсера HQL. Если вам действительно нужен IQueryable, вы можете сформулировать запрос, подобный этому
var ids = session.QueryOver<MyClass>()
.UnderlyingCriteria.Add(SpatialExpression.Within("Geo", extent))
.Select(myclass => myclass.Id)
.List<int>();
var query = session.Query<MyClass>()
.Where(x => ids.Contains(x.Id))
.Select(item => new MyClassView
{
Name, Year, Code
});
Примечание: при этом используются 2 поездки туда и обратно