[英]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");
一般来说,除了与RowCount
, Sum
和GroupProperty
我们可以使用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.