using System; using System.Collections.Generic; using System.Linq; public class Program { public static void Main() { var participantes = new List(); participantes.Add(new Participante(1)); participantes.Add(new Participante(2)); participantes.Add(new Participante(3)); participantes.Add(new Participante(4)); var notasFiscais = new List(); notasFiscais.Add(new NotaFiscal(1, 8000, "Example")); notasFiscais.Add(new NotaFiscal(2, 7000, "Example")); notasFiscais.Add(new NotaFiscal(3, 5000, "Example")); notasFiscais.Add(new NotaFiscal(4, 6000, "Example")); notasFiscais.Add(new NotaFiscal(5, 9000, "Example")); notasFiscais.Add(new NotaFiscal(6, 10000, "Example")); notasFiscais.Add(new NotaFiscal(1, 8000, "Example")); notasFiscais.Add(new NotaFiscal(2, 7000, "Example")); notasFiscais.Add(new NotaFiscal(3, 5000, "Example")); notasFiscais.Add(new NotaFiscal(4, 6000, "Example")); notasFiscais.Add(new NotaFiscal(5, 9000, "Example")); var notasFiscaisOrdenadas = notasFiscais .Where(x => participantes.Any(y => y.ParticipanteID == x.ClienteID)) .GroupBy(z => z.ClienteID) .Select(x => new NotaFiscal(){ ClienteID = x.First().ClienteID, ValorTotalNota = x.Sum(n => n.ValorTotalNota) }) .OrderByDescending(x => x.ValorTotalNota) .Take(5); foreach(var item in notasFiscaisOrdenadas){ Console.WriteLine($"Id: {item.ClienteID} \n ValorTotalNota: {item.ValorTotalNota} \n"); } } } public class NotaFiscal { public int ClienteID {get;set;} public decimal ValorTotalNota {get;set;} public string NomeCliente {get;set;} public NotaFiscal(int clienteId, decimal valorTotalNota, string nomeCliente) { this.ClienteID = clienteId; this.ValorTotalNota = valorTotalNota; this.NomeCliente = nomeCliente; } public NotaFiscal(){ } } public class Participante { public Participante(int participanteId){ this.ParticipanteID = participanteId; } public int ParticipanteID {get;set;} }