Yo hacía referencia a la posibilidad de ordenar una lista
especificando el nombre de la propiedad del objeto e indicar el tipo
de ordenación. Ciertamente es LINQ to Objects, pero consigues la
finalidad indicada.

Un saludo

On 7 abr, 13:42, ivowiblo <[email protected]> wrote:
> Buenas
> El codigo que pasaste que trabaja con LINQ, en realidad, trabaja con
> Linq-to-objects. No va a resolverlo en la consulta sql. La idea de un
> provider de Linq o una API de consultas, es que todo se compile a un t-
> sql y no que se ejecute en memoria.
> Para 2.1.2, hay un proyecto llamado NHibernate.LambdaExtensions que
> provee métodos de extensión a criteria para poder usar lambra
> expressions como restrictions. El 
> link:http://code.google.com/p/nhlambdaextensions/
>
> salut
>
> On 30 mar, 13:32, Juan Cuello <[email protected]> wrote:
>
>
>
> > Eso también se puede hacer por LINQ, pero te lo tienes que trabajar.
>
> > Puedes crear un método extensor de un objeto que te devuelva el valor
> > de una propiedad por reflection especificando el nombre de la
> > propiedad en string, y lo usas en la expresión LINQ :)
>
> > Yo lo hice para la ordenación de un grid (o grilla). El grid me decía
> > la columna seleccionada para ordenar y si era ascendente o descendente
> > (que tampoco te lo da el linq) y puede hacer cosas como:
>
> > IEnumerable<T> data = dataSource.OrderByProperty(propertyName,
> > direction == SortDirection.Ascending);
>
> > El OrderByProperty:
>
> >         public static IOrderedEnumerable<TKey>
> > OrderByProperty<TKey>(this IEnumerable<TKey> lista, string
> > propertyName, bool ascending)
> >         {
> >             ObjectComparer<object> __comparer = new
> > ObjectComparer<object>(ascending);
> >             return lista.OrderBy(c =>
> > c.GetPropertyValue<object>(propertyName), __comparer);
> >         }
>
> > El GetPropertyValue:
>
> >         public static TValue GetPropertyValue<TValue>(this object
> > element, string propertyName)
> >         {
> >             PropertyInfo property =
> > element.GetType().GetProperty(propertyName);
> >             if (property == null) throw new
> > NotSupportedException("Property " + propertyName + " ins't a public
> > property");
>
> >             return (TValue)property.GetValue(element, null);
> >         }
>
> > Y un comparador:
>
> >  private class ObjectComparer<TKey> : IComparer<TKey>
> >         {
> >             Comparer<TKey> compa = Comparer<TKey>.Default;
>
> >             private bool __isAscending;
>
> >             public ObjectComparer()
> >             {
> >                 __isAscending = true;
> >             }
>
> >             public ObjectComparer(bool isAscending)
> >             {
> >                 __isAscending = isAscending;
> >             }
>
> >             #region Miembros de IComparer<TKey>
>
> >             public int Compare(TKey x, TKey y)
> >             {
> >                 int result = compa.Compare(x, y);
> >                 if (__isAscending) return result;
> >                 else return result * -1;
> >             }
>
> >             #endregion
> >         }
>
> > On 30 mar, 17:04, Diego Mijelshon <[email protected]> wrote:
>
> > > Hay una alternativa a compilarlo, que es bajar los binaries 
> > > dehttp://hornget.net/packages/orm/nhibernate/nhibernate-trunk
> > > <http://hornget.net/packages/orm/nhibernate/nhibernate-trunk>El resultado 
> > > es
> > > el mismo; yo prefiero tener *checkouteado* el repo para ir viendo los
> > > updates, pero hornget puede ser más cómodo para tener todo a mano
> > > facilmente.
>
> > > En cuando al QueryOver... es un poco más cómodo a veces, pero la base es 
> > > la
> > > misma; si te gusta que sea strongly-typed, es para vos.
>
> > > De todos modos, tené en cuenta que el caso de uso principal de Criteria 
> > > (vs
> > > HQL o LINQ) es para búsquedas... y ahí muchas veces es más cómodo tener 
> > > algo
> > > NO strongly typed, donde puedas pasar como string el nombre de un campo 
> > > por
> > > el cual filtrar u ordenar.
>
> > >    Diego
>
> > > 2010/3/30 Juan Cuello <[email protected]>
>
> > > > Eso! El QueryOver!
>
> > > > No importa demasiado que no sea un proveedor de linq por mi parte,
> > > > pero lo convierte en algo mucho más intuitivo, y eso que ya no era
> > > > difícil... Puede que HQL sea muy potente, pero poder utilizar strongly
> > > > typed lo considero importantísimo.
>
> > > > La curiosidad me ha venido porque he descargado ConfORM para aprender
> > > > y he visto que utiliza NH 3.0, y más curiosidad aún... es un no
> > > > acabar :)
>
> > > > Muchísimas gracias José
>
> > > > On 30 mar, 16:22, José F. Romaniello <[email protected]> wrote:
> > > > > NHibernate 3 tiene un nuevo provider de linq. (Recordar que 
> > > > > NHibernate 2
> > > > ya
> > > > > tenia un provider de linq basado en criteria, esta disponible en
> > > > nhcontrib y
> > > > > es usado por mucha gente.)
>
> > > > > En NHibernate 3 el provider esta dentro de nhibernate. Este nuevo
> > > > provider
> > > > > ya soporta más escenarios que el viejo, sobre cuan estable es NH3, 
> > > > > creo
> > > > que
> > > > > es mejor sacar conclusiones por uno mismo.
>
> > > > > Por otro lado, nh3 incluye también una api strongly typed para 
> > > > > criteria
> > > > > llamada QueryOver, que bajo ningún punto de vista es un provider de 
> > > > > linq.
>
> > > > > Donde bajar NH3? creo que la única opción es descargar y compilar el
> > > > trunk.
>
> > > > > Por último, para estar más al día con las novedades:
> > > >http://nhforge.org/blogs/nhibernate/
>
> > > > > El 30 de marzo de 2010 11:09, Juan Cuello <[email protected]>
> > > > escribió:
>
> > > > > > Hola,
>
> > > > > > ¿Alguien sabe decirme el estado de NHibernate 3? Está release? En la
> > > > > > web veo que la ultima es la 2.1.2...
>
> > > > > > Por otro lado, me ha parecido ver algo que me daba la sensación que 
> > > > > > NH
> > > > > > 3 tenía integración con LINQ o almenos se parecía mucho...
>
> > > > > > Gracias
>
> > > > > > --
> > > > > > Para escribir al Grupo, hágalo a esta dirección:
> > > > > > [email protected]
> > > > > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> > > > > > To unsubscribe from this group, send email to nhibernate-hispano+
> > > > > > unsubscribegooglegroups.com or reply to this email with the words
> > > > "REMOVE
> > > > > > ME" as the subject.
>
> > > > --
> > > > Para escribir al Grupo, hágalo a esta dirección:
> > > > [email protected]
> > > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano
>
> > > > To unsubscribe from this group, send email to nhibernate-hispano+
> > > > unsubscribegooglegroups.com or reply to this email with the words 
> > > > "REMOVE
> > > > ME" as the subject.

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

To unsubscribe, reply using "remove me" as the subject.

Responder a