Linq NHibernate查询<;T>;用分离的标准。。。

Linq NHibernate查询<;T>;用分离的标准。。。,linq,nhibernate,linq-to-nhibernate,Linq,Nhibernate,Linq To Nhibernate,我有: var query = session.Query<MyClass>(); // Here I need to execute a detached criteria, like that : // query.UnderlyingCriteria.Add(SpatialExpression.Within("Geo", extent)); var t = query.Select(item => new MyClassView

我有:

var query = session.Query<MyClass>();    

// Here I need to execute a detached criteria, like that :
//  query.UnderlyingCriteria.Add(SpatialExpression.Within("Geo", extent));

var t = query.Select(item => new MyClassView
                                      {
                                          Name, Year, Code
                                      }
var query=session.query();
//这里我需要执行一个分离的条件,如下所示:
//query.underyingCriteria.Add(spacealPression.inthein(“Geo”,extent));
var t=query.Select(item=>newmyclassview
{
姓名、年份、代码
}
这是查询的一种方式吗?或者另一种方式?我需要一个可查询的结果


感谢

linq提供程序不使用隐藏的条件,它使用HQL解析器中的AST。如果您真的需要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
    });
var id=session.QueryOver()
.underyingcriteria.Add(空间表达在(“地理”,范围))
.Select(myclass=>myclass.Id)
.List();
var query=session.query()
.其中(x=>ids.Contains(x.Id))
.选择(项=>new MyClassView
{
姓名、年份、代码
});

注意:这使用了2次往返,但是

谢谢,如果我想返回IList,只使用QueryOver,我如何返回IList?我尝试了,但得到了一个错误:“无法从新MyClassView()确定成员”在查询结束时投影到DTO的唯一方法如下所示