Voce pode fazer assim:
1- Adicione este assembly (System.Linq.Dynamic) com o nuget ao seu projeto
2- use string ao inves de notaçao funcional:
List<Livro> livros = context.Livros.OrderBy("Livros DESC").ToList();
Note que assim voce pode criar uma string valida com os campos e direçao:
string ordem = "Autor ASC, Data DESC, Livro DESC"
List<Livro> livros = context.Livros.OrderBy(ordem).ToList();
Aqui um exemplo completo:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Dynamic;//!!! IMPORTANTE ADICIONAR
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
class Livro
{
public Livro(string autor, string ISBN, string titulo, DateTime data)
{
this.autor = autor;
this.ISBN = ISBN;
this.titulo = titulo;
this.data = data;
}
public string autor { get; set; }
public string ISBN { get; set; }
public string titulo { get; set; }
public DateTime data { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<Livro> livros = new List<Livro>() { new Livro("William", "ABC123", "A arte do erro", new DateTime(2020, 11, 05)), new Livro("Pedro", "FEF123", "A erro da arte", new DateTime(2017, 01, 07)), new Livro("Maria", "GTR123", "A erro do erro ", new DateTime(2050, 12, 24)) };
string ordem1 = "autor asc";
List<Livro> livrosordenados1 = livros.OrderBy(ordem1).ToList();
string ordem2 = "data desc, titulo asc";
List<Livro> livrosordenados2 = livros.OrderBy(ordem2).ToList();
Console.WriteLine("Ordem1");
foreach (Livro l in livrosordenados1)
Console.WriteLine("{0} - {1}, {2}, {3}", l.autor, l.titulo, l.ISBN, l.data.ToShortDateString());
Console.WriteLine("Ordem2");
foreach (Livro l in livrosordenados2)
Console.WriteLine("{0} - {1}, {2}, {3}", l.autor, l.titulo, l.ISBN, l.data.ToShortDateString());
Console.ReadKey();
}
}
}
att
William John Adam Trindade
Analyste-programmeur
Sogi Informatique ltée
If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre
de "Marcar como Resposta".