Supongamos que tengo dos clases:propiedades de acceso anidado con lambda dinámico utilizando Linq.Expression
class person
{
int ID
string name
Address address
}
class address
{
int ID
string street
string country
}
Estas clases se dan más o menos, que se asignan a través de NHibernate para ser honesto :)
En una grilla (datatables.net como base) me gustaría tener una clasificación independiente del tipo.
Por lo tanto he creado una expresión lambda:
var param = Expression.Parameter(typeof(T), typeof(T).Name);
var sortExpression = Expression.Lambda<Func<T, object>>
(Expression.Convert(Expression.Property(param, "Property to sort"), typeof(object)), param);
Si paso persona que el Tipo T y sustituir a la "propiedad para ordenar" con "nombre" que funciona bien (crea una lambda correcta). Si la propiedad es para ordenar "address.street" no va a funcionar, me tiro el siguiente error:
Property 'address.street' is not defined for type 'person'
sólo veo una solución hasta el momento, pero no lo suficientemente claro ... Me gustaría tratar de dividir la cadena que contiene el Nombre de la propiedad (dividido por)
¿Alguien puede dar una mejor solución? Necesito agregar sortExpression a un objeto IQueryable query.OrderBy(sortExpression)
.
No estoy seguro si mi título es claro, por favor, adelante y corríjalo.
Gracias de antemano.
Como solo obtengo un objeto IQueryable que ya contiene un montón de datos, luego agrego el paginado y más, luego solo cargo los datos que quedan en la consulta. Esto es hecho por nHibernate. Solo para la clasificación no puede ser la solución (espero) – griti
Ese es mi punto. DynamicQuery ya puede hacer esto "agregar la ordenación a un consultable existente". Tengo una solución demo en mi blog que hace esto. http://blogs.teamb.com/craigstuntz/2009/04/27/38243/ –
oh gracias, leeré a través de él – griti