Avatar ·

Ordenamiento dinámico con LINQ: ¿cómo aplicar OrderBy a IEnumerable/IQueryable por nombre de propiedad desde una cadena?

¡Hola a todos! Soy nuevo en C# y LINQ, y me he encontrado con una tarea que me tiene perplejo. Tengo una colección de objetos `IEnumerable` (o `IQueryable`), y quiero ordenarla por diferentes campos según la elección del usuario. El usuario pasa el nombre del campo (por ejemplo, "Name" o "Date") y la dirección de ordenamiento ("asc" o "desc") como cadenas. ¿Cómo puedo aplicar dinámicamente `OrderBy` o `OrderByDescending` a la colección usando estas cadenas? El problema es que `OrderBy` es un método genérico que requiere especificar la propiedad en tiempo de compilación mediante una expresión lambda (por ejemplo, `list.OrderBy(x => x.Name)`). No puedo simplemente escribir `list.OrderBy("Name")`. Aquí hay un ejemplo de código que no 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(); } } ```

No answers yet.

Inicia sesión para dejar una respuesta

Blogs