public static NHibernate.Criterion.Lambda.QueryOverProjectionBuilder <T> GroupByProperty <T>( this NHibernate.Criterion.Lambda.QueryOverProjectionBuilder <T> builder, System.Linq.Expressions.Expression <Func <object> > propertyExpression, System.Linq.Expressions.Expression <Func <object> > aliasExpression) { var alias = aliasExpression.ParseProperty(); var propertyProjection = Projections.Property(propertyExpression); var groupProjection = Projections.GroupProperty(propertyProjection); var withAliasProjection = Projections.Alias(groupProjection, alias); builder.Select(withAliasProjection); return(builder); }
/// <summary> /// Selects the items. /// </summary> /// <param name="builder">The builder.</param> /// <returns></returns> protected override NHibernate.Criterion.Lambda.QueryOverProjectionBuilder <MediaFile> SelectItems(NHibernate.Criterion.Lambda.QueryOverProjectionBuilder <MediaFile> builder) { return(builder.Select(() => alias.Id).WithAlias(() => modelAlias.Id) .Select(() => alias.Title).WithAlias(() => modelAlias.Name) .Select(() => alias.CreatedOn).WithAlias(() => modelAlias.CreatedOn) .Select(() => alias.Version).WithAlias(() => modelAlias.Version) .Select(() => alias.OriginalFileExtension).WithAlias(() => modelAlias.FileExtension) .Select(() => alias.PublicUrl).WithAlias(() => modelAlias.PublicUrl) .Select(alias.GetIsProcessingConditions()).WithAlias(() => modelAlias.IsProcessing) .Select(alias.GetIsFailedConditions()).WithAlias(() => modelAlias.IsFailed) .Select(() => alias.Size).WithAlias(() => modelAlias.Size)); }