按可为空的整数对NHibernate查询结果进行分组
我正在使用NHibernate查询一个具有以下格式的元组的表:(String,Int?),其中整数可以为null。所以,我想把结果按数字分组,然后按字母顺序排序。在得到查询结果后,我可以很容易地做到这一点,但我想让NHibernate制定一个执行此操作的查询。以下是我想要的结果示例: α,1按可为空的整数对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
δ,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();
谢谢,我来试一试。