fork download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. public class Program
  6. {
  7. public static void Main()
  8. {
  9. var participantes = new List<Participante>();
  10. participantes.Add(new Participante(1));
  11. participantes.Add(new Participante(2));
  12. participantes.Add(new Participante(3));
  13. participantes.Add(new Participante(4));
  14.  
  15. var notasFiscais = new List<NotaFiscal>();
  16. notasFiscais.Add(new NotaFiscal(1, 8000, "Example"));
  17. notasFiscais.Add(new NotaFiscal(2, 7000, "Example"));
  18. notasFiscais.Add(new NotaFiscal(3, 5000, "Example"));
  19. notasFiscais.Add(new NotaFiscal(4, 6000, "Example"));
  20. notasFiscais.Add(new NotaFiscal(5, 9000, "Example"));
  21. notasFiscais.Add(new NotaFiscal(6, 10000, "Example"));
  22. notasFiscais.Add(new NotaFiscal(1, 8000, "Example"));
  23. notasFiscais.Add(new NotaFiscal(2, 7000, "Example"));
  24. notasFiscais.Add(new NotaFiscal(3, 5000, "Example"));
  25. notasFiscais.Add(new NotaFiscal(4, 6000, "Example"));
  26. notasFiscais.Add(new NotaFiscal(5, 9000, "Example"));
  27.  
  28. var notasFiscaisOrdenadas = notasFiscais
  29. .Where(x => participantes.Any(y => y.ParticipanteID == x.ClienteID))
  30. .GroupBy(z => z.ClienteID)
  31. .Select(x => new NotaFiscal(){
  32. ClienteID = x.First().ClienteID,
  33. ValorTotalNota = x.Sum(n => n.ValorTotalNota)
  34. })
  35. .OrderByDescending(x => x.ValorTotalNota)
  36. .Take(5);
  37.  
  38. foreach(var item in notasFiscaisOrdenadas){
  39. Console.WriteLine($"Id: {item.ClienteID} \n ValorTotalNota: {item.ValorTotalNota} \n");
  40. }
  41.  
  42. }
  43.  
  44. }
  45.  
  46. public class NotaFiscal {
  47.  
  48. public int ClienteID {get;set;}
  49. public decimal ValorTotalNota {get;set;}
  50. public string NomeCliente {get;set;}
  51.  
  52. public NotaFiscal(int clienteId, decimal valorTotalNota, string nomeCliente) {
  53. this.ClienteID = clienteId;
  54. this.ValorTotalNota = valorTotalNota;
  55. this.NomeCliente = nomeCliente;
  56. }
  57.  
  58. public NotaFiscal(){
  59. }
  60.  
  61. }
  62.  
  63. public class Participante {
  64. public Participante(int participanteId){
  65. this.ParticipanteID = participanteId;
  66. }
  67. public int ParticipanteID {get;set;}
  68. }
Success #stdin #stdout 0.04s 16904KB
stdin
Standard input is empty
stdout
Id: 1 
 ValorTotalNota: 16000 

Id: 2 
 ValorTotalNota: 14000 

Id: 4 
 ValorTotalNota: 12000 

Id: 3 
 ValorTotalNota: 10000