system.dynamic.linqを使用して動的な並べ替えを作成しようとしています。
これは、私が使用するクエリです:
var query = dalSession.Query<T>().AsQueryable();
var res = (from x in query orderby "x.FirstName" select x)
これはmysqlの出力です:
select
affiliate0_.id as id0_,
affiliate0_.first_name as first6_0_,
from affiliate affiliate0_ order by 'x.FirstName' //FirstName as well
したがって、mysqlクエリに送信された出力は直接の文字列であり、リフレクション( 'x.FirstName'
)または( 'FirstName'
)ではないことが'x.FirstName'
ます。
これはmysqlのコンテキストでは意味がなく、 affiliate0_.first_name
による注文が必要なようです。
Nhibernateにメンバー自体を提供する方法はありますか?コンパイルされたクエリは正常に実行されますか?
var param = Expression.Parameter("x");
var prop = Expression.Property(param, "FirstName");
var lambda = Expression.Lambda<Func<User, string>>(prop, param);
query.Orderby(lambda);