Por cierto SetMaxResults es la funcion para limitar la cantidad de registros.
2012/3/1 Dario Quintana <[email protected]> > Hola Giuliano > > Te paso algo que se hizo hace mucho tiempo para un ejemplo de cómo usar > criteria. > > https://bitbucket.org/darioquintana/course/src/07d854d12783/uNHAddins.Examples.Course/EntitiesNHPersistence.Tests/Criteria/CriteriaFixture.cs > > https://bitbucket.org/darioquintana/course/src/07d854d12783/uNHAddins.Examples.Course/YourPrjDomain/Criteria/CustomerFinder.cs > > El CustomerFinder, tiene una manera ordenada de ir encadenando criterios, > el test te muestra cómo utilizarlo. Al hacerlo de esa manera, es facil > darle límites a la consulta de Criteria. > > Saludos > > > > 2012/3/1 Giulliano <[email protected]> > >> Estoy creando una consulta, que tendrá resultados diferentes en >> función de los parámetros recibidos y si la situación se cumple, va a >> crear un filtro y una cantidad fija de los resultados de esta >> situación. El filtro está listo, pero no saben cómo establecer la >> cantidad en estas situaciones. A continuación se muestra la consulta: >> >> public IEnumerable<ConeSlab> ConsultarPlacasAcompanhamento(String >> codigoLaminador, Int16 placasAEnfornar, Boolean placasEnfornadas, >> Int16 placasDesenfornadas, Boolean placasRejeitadas) >> { >> try >> { >> var criteria = DetachedCriteria.For<ConeSlab>() >> .CreateAlias("Cone", "C") >> .CreateAlias("Slab.SlabPDO", "SP") >> .Add(Restrictions.Eq("C.Mill", codigoLaminador)) >> .Add(Restrictions.IsNotNull("C.IdentBeginDtm")) >> .Add(Restrictions.IsNotNull("SP.IdentBeginDtm")); >> >> var ordem = "SP.IdentBeginDtm"; >> >> Junction disjunction = Restrictions.Disjunction(); >> >> //Identificadas >> if (placasAEnfornar > 0) >> { >> ICriterion criterion = Restrictions.Conjunction() >> .Add(Restrictions.IsNotNull("SP.IdentEndDtm")) >> .Add(Restrictions.IsNull("SP.ChargeDtm")) >> .Add(Restrictions.IsNull("SP.RejectDtm")); >> **//How to set here?** >> disjunction.Add(criterion); >> } >> >> //Enfornadas >> if (placasEnfornadas) >> { >> ICriterion criterion = Restrictions.Conjunction() >> .Add(Restrictions.IsNotNull("SP.ChargeDtm")) >> .Add(Restrictions.IsNull("SP.DischDtm")) >> .Add(Restrictions.IsNull("SP.RejectDtm")); >> disjunction.Add(criterion); >> } >> >> //Desenfornadas >> if (placasDesenfornadas > 0) >> { >> ICriterion criterion = Restrictions.Conjunction() >> .Add(Restrictions.IsNotNull("SP.DischDtm")) >> .Add(Restrictions.IsNull("SP.MillDtm")) >> .Add(Restrictions.IsNull("SP.RejectDtm")); >> **//How to set here?** >> disjunction.Add(criterion); >> } >> >> //Rejeitadas >> if (placasRejeitadas) >> criteria.Add(Restrictions.IsNull("SP.RejectDtm")); >> >> criteria.Add(disjunction); >> >> return coneSlabRepository.GetListCriteria(criteria, 300, >> Order.Desc(ordem)); >> >> } >> catch (Exception ex) >> { >> Log.Error(AppStrings.EventNatureProgramacaoSequenciamento, >> LibStrings.MessageExceptionQuery, ex); >> throw new LoggedException(ex.Message); >> } >> } >> >> Un ejemplo: >> Tengo que mostrar a tan sólo 10 registros y 20 registros >> Desenfornadas identificados. Si la condición es también Enfornadas >> para mostrar, la pantalla se ve así: >> - Todos los registros que satisfacen la condición de Enfornadas >> - Identificados 10 registros >> - 20 registros Desenformadas. >> >> Por lo tanto, la cantidad no se puede establecer al final. Tendría >> una manera de ajustar de forma individual? >> >> -- >> Para escribir al Grupo, hágalo a esta dirección: >> [email protected] >> Para más, visite: http://groups.google.com/group/NHibernate-Hispano > > > > > -- > Dario Quintana > -- Dario Quintana -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
