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.
