Tri dynamique LINQ : comment appliquer OrderBy à IEnumerable/IQueryable par nom de propriété à partir d'une chaîne ?
Bonjour à tous ! Je suis débutant en C# et LINQ, et je suis confronté à un problème qui me laisse perplexe.
J'ai une collection d'objets `IEnumerable` (ou `IQueryable`), et je souhaite la trier selon différents champs en fonction du choix de l'utilisateur. L'utilisateur transmet le nom du champ (par exemple, "Name" ou "Date") et la direction du tri ("asc" ou "desc") sous forme de chaînes. Comment puis-je appliquer dynamiquement `OrderBy` ou `OrderByDescending` à la collection en utilisant ces chaînes ?
Le problème est que `OrderBy` est une méthode générique qui nécessite de spécifier la propriété au moment de la compilation via une expression lambda (par exemple, `list.OrderBy(x => x.Name)`). Je ne peux pas simplement écrire `list.OrderBy("Name")`.
Voici un exemple de code qui ne fonctionne pas :
```csharp
public List SortPeople(IEnumerable people, string sortBy, bool ascending)
{
if (sortBy == "Name")
{
return ascending ? people.OrderBy(p => p.Name).ToList()
: people.OrderByDescending(p => p.Name).ToList()
```