2011-12-06 6 views
5

Tengo un LINQ (Entity Framework) Resultados porSolicitar LINQ por al nombre de la columna es dinámico y pasan como una cadena a una función

function getData(string col_to_sort , bool IsAscending , int pageNo , int pageSize) 
{ 
    context.table_name.Skip(pageNo*pageSize).Take(pageSize).ToArray(); 
} 

Lo que quiero es que si paso el nombre de la columna como un parámetro para la función y el orden en que ordenará mi consulta también.

Dado que el nombre de mi columna será una cadena, es posible que tengamos que convertirlo a ObjectQuery.

¿Cómo puedo lograrlo?

Cualquier ayuda se agradece

Respuesta

6

Puede utilizar Dynamic Linq:

string direction = IsAscending ? " ASC" : " DESC"; 
context.table_name.OrderBy(col_to_sort + direction).Skip(pageNo*pageSize).Take(pageSize).ToArray(); 
+0

funciona para mí, pero necesito usarlo como "OrdenarPor (" it.id desc ")"? ¿Siempre necesitamos usar "eso"? ¿Qué es esto? – Moons

+0

uh, no estoy seguro ... no parece ser necesario en los ejemplos en el blog de Scott –

+1

Una actualización después de años: hay varias nuevas librerías en github vía nuget . uno de ellos es https://github.com/kahanu/System.Linq.Dynamic –

Cuestiones relacionadas