Si vous êtes juste après le tri dynamique sans systeme complet dynamique-Linq, vous pouvez consulter un poste que j'ai écrit à ce sujet un certain temps: click
EDIT: Je ne sais pas plus vraiment un blog alors voici la méthode d'extension réelle:
public static IQueryable<TEntity> OrderBy<TEntity>(this IQueryable<TEntity> source, string sortExpression) where TEntity : class
{
if (string.IsNullOrEmpty(sortExpression))
return source; // nothing to sort on
var entityType = typeof(TEntity);
string ascSortMethodName = "OrderBy";
string descSortMethodName = "OrderByDescending";
string[] sortExpressionParts = sortExpression.Split(' ');
string sortProperty = sortExpressionParts[0];
string sortMethod = ascSortMethodName;
if (sortExpressionParts.Length > 1 && sortExpressionParts[1] == "DESC")
sortMethod = descSortMethodName;
var property = entityType.GetProperty(sortProperty);
var parameter = Expression.Parameter(entityType, "p");
var propertyAccess = Expression.MakeMemberAccess(parameter, property);
var orderByExp = Expression.Lambda(propertyAccess, parameter);
MethodCallExpression resultExp = Expression.Call(
typeof(Queryable),
sortMethod,
new Type[] { entityType, property.PropertyType },
source.Expression,
Expression.Quote(orderByExp));
return source.Provider.CreateQuery<TEntity>(resultExp);
}
Semble que l'entrée de blog est un lien mort. @ ray2k ... pouvez-vous le mettre à jour? –
Terminé. http://blog.invalidoperation.com/2011/07/linq-to-sql-and-objectdatasource-bff.html – ray2k
On dirait que le nouveau lien est mort aussi. Pourriez-vous republier la solution ici dans votre réponse? – jahu