簡體   English   中英

如何在Nhibernate Projections類的單個GroupProperty方法內添加多個列

[英]How to add multiple columns inside a single GroupProperty method of Nhibernate Projections Class

我正在使用Visual Studio2008。我正在嘗試在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");

一般來說,除了與RowCountSumGroupProperty我們可以使用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和Sum

那很容易變成

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; }
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM