繁体   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