C# 使用fluent nhibernate queryover对子查询别名的sql数据进行排序
如何在nhiberante queryover中使用子查询别名对sql数据进行排序?您可以看到下面的示例C# 使用fluent nhibernate queryover对子查询别名的sql数据进行排序,c#,sorting,nhibernate,fluent-nhibernate,subquery,C#,Sorting,Nhibernate,Fluent Nhibernate,Subquery,如何在nhiberante queryover中使用子查询别名对sql数据进行排序?您可以看到下面的示例 select Name, (select count(Id) from Orders ...) as 'OrderCount' from Customer order by OrderCount desc 有一份询问函的草稿。它由一个子查询组成,表示订单数量。对客户的根查询,然后使用它创建一个SELECT投影和ORDER BY projection Customer cus
select Name,
(select count(Id) from Orders ...) as 'OrderCount'
from Customer
order by OrderCount desc
有一份询问函的草稿。它由一个子查询组成,表示订单数量。对客户的根查询,然后使用它创建一个SELECT投影和ORDER BY projection
Customer customer = null;
Orders orders = null;
// the subselect of a count
var subQuery = QueryOver.Of<Orders>(() => orders)
.Where(() => orders.Customer.ID == customer.ID)
.Select(Projections.RowCount());
// the alias of the Customer to be injected into subquery
var query = session.QueryOver<Customer>(() => customer);
query.SelectList(l => l
.Select(p => p.Name).WithAlias(() => customer.Name)
// see the customer.Count property
.Select(Projections.SubQuery(subQuery)).WithAlias(() => customer.Count)
);
// Order by the count (desc)
var list = query
.OrderBy(Projections.SubQuery(subQuery))
.Desc
.TransformUsing(Transformers.AliasToBean<Customer>())
.List<Customer>()
;
在本例中,我们希望客户具有一些C属性计数,这在该查询的转换过程中填充。如果没有,我们可以创建一些CustomerTo…Hi,我的排序列是动态的,并作为字符串传递到方法中。我需要像.OrderByCount这样的东西。这不是你需要的东西;你知道为什么吗?因为别名(例如计数)不是按顺序计算的。只需将相同的表达式传递给SELECT。我给你的答案实际上是两者兼而有之。基于从上层传递的一些参数。。。您将创建分离的查询。然后您将使用它来选择和订购。。。一轮2胜通过;