Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按可为空的整数对NHibernate查询结果进行分组_Nhibernate_Sorting_Integer_Grouping_Nullable - Fatal编程技术网

按可为空的整数对NHibernate查询结果进行分组

按可为空的整数对NHibernate查询结果进行分组,nhibernate,sorting,integer,grouping,nullable,Nhibernate,Sorting,Integer,Grouping,Nullable,我正在使用NHibernate查询一个具有以下格式的元组的表:(String,Int?),其中整数可以为null。所以,我想把结果按数字分组,然后按字母顺序排序。在得到查询结果后,我可以很容易地做到这一点,但我想让NHibernate制定一个执行此操作的查询。以下是我想要的结果示例: α,1 δ,4 高尔夫,3 2号酒店 利马,5 查理,0 θ,0 beta,空值 回显,空 我要寻找的三个分组是:(int>0),(int==0)和(int=null)。以下是我使用的查询: var devices

我正在使用NHibernate查询一个具有以下格式的元组的表:(String,Int?),其中整数可以为null。所以,我想把结果按数字分组,然后按字母顺序排序。在得到查询结果后,我可以很容易地做到这一点,但我想让NHibernate制定一个执行此操作的查询。以下是我想要的结果示例:

α,1
δ,4
高尔夫,3
2号酒店 利马,5
查理,0
θ,0
beta,空值
回显,空

我要寻找的三个分组是:(int>0),(int==0)和(int=null)。以下是我使用的查询:

var devices = session.QueryOver<Table>()
                .OrderBy(item => item.Number).Desc
                .OrderBy(item => item.Name).Asc
                .List();
var devices=session.QueryOver()
.OrderBy(item=>item.Number).Desc
.OrderBy(item=>item.Name).Asc
.List();
目前,我正在查询完成后对它们进行排序,如下所示:

List<Table> sortedDevices = devices.OrderBy(item => item.Name).Where(item => item.Number > 0).ToList();
            sortedDevices = sortedDevices.Concat(devices.OrderBy(item => item.Name).Where(item => item.Number == 0).ToList()).ToList();
            sortedDevices = sortedDevices.Concat(devices.OrderBy(item => item.Name).Where(item => item.Number == null).ToList()).ToList();
List-sortedDevices=devices.OrderBy(item=>item.Name).Where(item=>item.Number>0.ToList();
sortedDevices=sortedDevices.Concat(devices.OrderBy(item=>item.Name)。其中(item=>item.Number==0)。ToList()).ToList();
sortedDevices=sortedDevices.Concat(devices.OrderBy(item=>item.Name)。其中(item=>item.Number==null)。ToList()).ToList();

可以让NHibernate这样对查询进行分组吗?

大致如下:

session.QueryOver<User>()
    .Select(Projections.Alias(Projections
        .Conditional(Expression.Gt("Number", 0),
            Projections.Constant(1),
            Projections.Conditional(Expression.Eq("Number", 0),
                Projections.Constant(0),
                Projections.Constant(-1))),
        "group"))
    .OrderBy(Projections.Property("group")).Desc
    .ThenBy(table => table.Name).Asc
    .List();
session.QueryOver()
.选择(投影)。别名(投影
.Conditional(表达式.Gt(“数字”,0),
投影。常数(1),
条件投影(表达式Eq(“数字”,0),
投影。常数(0),
预测。常数(-1)),
“集团”))
.OrderBy(Projections.Property(“组”)).Desc
.ThenBy(table=>table.Name).Asc
.List();

谢谢,我来试一试。