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
C# 使用fluent nhibernate queryover对子查询别名的sql数据进行排序_C#_Sorting_Nhibernate_Fluent Nhibernate_Subquery - Fatal编程技术网

C# 使用fluent nhibernate 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

如何在nhiberante queryover中使用子查询别名对sql数据进行排序?您可以看到下面的示例

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胜通过;