Avatar ·

Ordenação dinâmica com LINQ: como aplicar OrderBy a IEnumerable/IQueryable pelo nome da propriedade a partir de uma string?

Olá a todos! Sou novo em C# e LINQ, e me deparei com uma tarefa que me deixa perplexo. Tenho uma coleção de objetos `IEnumerable` (ou `IQueryable`) e quero ordená-la por diferentes campos dependendo da escolha do usuário. O usuário passa o nome do campo (por exemplo, "Name" ou "Date") e a direção da ordenação ("asc" ou "desc") como strings. Como posso aplicar dinamicamente `OrderBy` ou `OrderByDescending` à coleção usando essas strings? O problema é que `OrderBy` é um método genérico que requer a especificação da propriedade em tempo de compilação através de uma expressão lambda (por exemplo, `list.OrderBy(x => x.Name)`). Não posso simplesmente escrever `list.OrderBy("Name")`. Aqui está um exemplo de código que não funciona: ```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(); } } ```