0

私はVisual Studio 2008を使用しています。Nhibernate.ProjectionsクラスのGroupPropertyメソッドの中に複数の列を追加しようとしています。しかし、私は必要な出力を得ることに失敗しています。私はこのようなことを試みた。 RowCountSumGroupPropertyと脇一般Nhibernate Projectionsの単一のGroupPropertyメソッド内に複数の列を追加する方法

ICriteria Criteria = CreateCriteria("BaseCriteria"); 
projectionList.Add(Projections.GroupProperty(
      Projections.SqlFunction("concat", 
      NHibernateUtil.String, Projections.Property("FirstName"), 
      Projections.Constant(' '), 
      Projections.Conditional(Expression.IsNotNull("LastName"), 
      Projections.Property("LastName"), Projections.Constant(String.Empty)))), "ClientName"); 

答えて

0

、我々はSqlGroupProjection

var projectionList = Projections.ProjectionList() 
    .Add(Projections.RowCount(), "RowCount") 
    .Add(Projections.Sum("Price"), "Price") 
    .Add(Projections.GroupProperty("StatusId"), "StatusId") 
    .Add(Projections.SqlGroupProjection(
      "LastName + ' ' + FirstName as ClientName", 
      "LastName + ' ' + FirstName", 
      new string[] {"ClientName"}, 
      new IType[] {NHibernate.NHibernateUtil.String}) 
     , "ClientName") 

別名「CLIENTNAME」を使用することができますすることは省略することができる。..わからない別名として数回繰り返し、そう好むていますそれらすべて

そしてここNHibernate GroupBy and Sum

できることを示すように使用するには簡単

.SetProjection(projectionList) 
.SetResultTransformer(Transformers.AliasToBean<MyDTO>()) 

public class MyDTO 
{ 
    public virtual int RowCount { get; set; } 
    public virtual int Price { get; set; } // type depends on SUM result 
    public virtual int StatusId { get; set; } 
    public virtual string Name { get; set; } 
} 

に変換

関連する問題