nhibernate group by order by
本文关键字:by order group nhibernate | 更新日期: 2024-04-23 14:56:26
任务表:
id AssigneeID Name
1 2 TODO1
2 3 TODO2
3 1 TODO3
分配表:
id Name Status
1 Max Available
2 Ryan NotAvailable
3 Lisa NotAvailable
我的jqgrid表如下:
Name Assignee Status
TODO1 Ryan NotAvailable
TODO2 Lisa NotAvailable
TODO3 Max Available
我想对状态列进行排序,所以我这样做了:
var query = scope.Session.QueryOver<Task>().Where(s=>s.Id!=null);
var x = query.Select(Projections.Distinct(Projections.Property<Task>(task => task.AssigneeID))).AddSortExpression("Status desc").List<Assignee>();
但是,这会返回一个错误,因为Status在Assignee表中,而不是在Task表中。
此外,我如何在代码中使用GROUP BY,因为我认为一旦我尝试对Status进行排序,它就会导致错误。它不知道该先放哪一个,瑞恩的NotAvailable还是丽莎的not Available。。。请帮忙。。。
首先,您需要让NH了解任务和受让人之间的关联。那你为什么需要一个团体通过
class Task
{
public virtual Assignee Assignee { get; set; }
}
如果你只需要这3个属性
SomeDto dto = null;
Assignee assignee = null;
session.QueryOver<Task>()
.JoinAlias(task => task.Assignee, () => assignee)
.OrderBy(() => assignee.Status)
.SelectList(list => list
.Select(task => task.Name).WithAlias(() => dto.Name)
.Select(() => assignee.Name).WithAlias(() => dto.Assignee)
.Select(task => assignee.Status).WithAlias(() => dto.Status))
.TransformUsing(Transformers.AliasToBean<SomeDto>())
.List<SomeDto>()
或者如果您希望整个任务和受让人对象返回
Assignee assignee = null;
var tasks = session.QueryOver<Task>()
.JoinAlias(task => task.Assignee, () => assignee)
.OrderBy(() => assignee.Status)
.List();