Je construis une petite classe de recherche qui utilise PredicateBuilder pour obtenir des résultats:LINQ tri: ne peut pas commander par type « System.IComparable »
voici ma requête:
var results = (from u in db.users
join p in db.profiles on u.userId equals p.UserID
select new SearchResult { Profile = p, User = u }).AsQueryable().Where(predicate);
résultats deviennent une dénombrable de SearchResult:
public class SearchResult
{
public user User { get; set; }
public profile Profile { get; set; }
}
Cela fonctionne bien, mais maintenant je veux aussi faire le tri:
var sortedResult = results.OrderBy(x => x.User.timeAdded);
Et cela fonctionne bien aussi, sauf quand je fais:
Expression<Func<SearchResult, IComparable>> OrderByExpression = x => x.User.timeAdded;
var sortedResult = results.OrderBy(OrderByExpression);
Je reçois cette erreur: ne peut pas commander par type « System.IComparable ».
N'est-ce pas exactement la même chose que de placer la requête lambda directement dans la clause orderby (qui fonctionne)? La raison pour laquelle je fais cela est que je veux passer l'expression orderby à une autre fonction.
Quelqu'un sait ce que je fais mal? Merci!
Veuillez montrer l'implémentation de OrderByExpression – Dyppl