Pregunta

Tengo el siguiente objeto de dominio:

public class Data
{
    public virtual int ID { get; set; }
    public virtual DateTime TimeStamp { get; set; }
    public virtual int Value { get; set; }

    public virtual Channel Channel { get; set; }       

}  

Estoy usando repositorios de Rhino.Commons. Necesito seleccionar suma de los valores de algunos canales para un cierto período. Estos valores deben ser ordenados por ID del canal. Utilizo la siguiente consulta (en el método repositorio):

var criteria = DetachedCriteria.For<LiveData>()
            .Add(Restrictions.Le("TimeStamp", startDate))
            .Add(Restrictions.Ge("TimeStamp", endDate))
            .Add(Restrictions.InG<Channel>("Channel", channels))
            .SetProjection(Projections.Sum("Value"))
            .SetProjection(Projections.GroupProperty("Channel"));

long[] result = ReportAll<long>(criteria, Projections.ProjectionList(), Order.Asc("Channel"));

Y recibo de error en la última línea, porque esta consulta no devuelve una lista de números largos. Devuelve una lista de objetos de este tipo (que trabaja con él):

public class ResultValue
{
    public virtual Channel Channel { get; set;}
    public virtual int Value { get; set; }
    public ResultValue()
    {            
    }

    public ResultValue(int value, Channel channel)
    {
        this.Value = value;
        this.Channel = channel;
    }
}

Esto se debe a que he añadido Projections.GroupProperty ( "Canal") de proyección de criterios para hacer una agrupación. ¿Hay alguna manera de eliminar una de las proyecciones (Projections.GroupProperty ( "Canal") de mi muestra) a partir de resultados o añadir una agrupación sin proyección?

¿Fue útil?

Solución

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top