fork(1) download
  1. using System;
  2. using System.Linq;
  3.  
  4.  
  5.  
  6. class Program {
  7. static void Main() {
  8. var query=new[] {
  9. new { Id=1,Numero=285287 }, // Auditoria.Id=11 -> Maquina.Id=102 -> Maquina.Name="C" // position 2
  10. new { Id=2,Numero=562974 }, // Auditoria.Id=12 -> Maquina.Id=118 -> Maquina.Name="S" // position 3b
  11. new { Id=5,Numero=185720 }, // Auditoria.Id=15 -> Maquina.Id=100 -> Maquina.Name="A" // position 1
  12. new { Id=7,Numero=302703 }, // Auditoria.Id=17 -> Maquina.Id=118 -> Maquina.Name="S" // position 3a
  13. };
  14.  
  15. var ItemAuditoria=new[] {
  16. new { Acao=new { Id=1 },Auditoria=new { Id=11 } },
  17. new { Acao=new { Id=2 },Auditoria=new { Id=12 } },
  18. new { Acao=new { Id=3 },Auditoria=new { Id=13 } },
  19. new { Acao=new { Id=4 },Auditoria=new { Id=14 } },
  20. new { Acao=new { Id=5 },Auditoria=new { Id=15 } },
  21. new { Acao=new { Id=6 },Auditoria=new { Id=16 } },
  22. new { Acao=new { Id=7 },Auditoria=new { Id=17 } },
  23. new { Acao=new { Id=8 },Auditoria=new { Id=18 } },
  24. new { Acao=new { Id=9 },Auditoria=new { Id=19 } },
  25. };
  26.  
  27. var Auditoria=new[] {
  28. new { Id=11,Maquina=new { Id=102 } },
  29. new { Id=12,Maquina=new { Id=118 } },
  30. new { Id=13,Maquina=new { Id=104 } },
  31. new { Id=14,Maquina=new { Id=100 } },
  32. new { Id=15,Maquina=new { Id=100 } },
  33. new { Id=16,Maquina=new { Id=122 } },
  34. new { Id=17,Maquina=new { Id=118 } },
  35. new { Id=18,Maquina=new { Id=100 } },
  36. new { Id=19,Maquina=new { Id=100 } },
  37. };
  38.  
  39. var Maquina=new[] {
  40. new { Id=100,Nome="A" },
  41. new { Id=101,Nome="B" },
  42. new { Id=102,Nome="C" },
  43. new { Id=103,Nome="D" },
  44. new { Id=104,Nome="E" },
  45. new { Id=105,Nome="F" },
  46. new { Id=106,Nome="G" },
  47. new { Id=107,Nome="H" },
  48. new { Id=108,Nome="I" },
  49. new { Id=109,Nome="J" },
  50. new { Id=110,Nome="K" },
  51. new { Id=111,Nome="L" },
  52. new { Id=112,Nome="M" },
  53. new { Id=113,Nome="N" },
  54. new { Id=114,Nome="O" },
  55. new { Id=115,Nome="P" },
  56. new { Id=116,Nome="Q" },
  57. new { Id=117,Nome="R" },
  58. new { Id=118,Nome="S" },
  59. new { Id=119,Nome="T" },
  60. new { Id=120,Nome="U" },
  61. new { Id=121,Nome="V" },
  62. new { Id=122,Nome="W" },
  63. new { Id=123,Nome="X" },
  64. new { Id=124,Nome="Y" },
  65. new { Id=125,Nome="Z" },
  66. };
  67.  
  68. query=(
  69. from distinctAcao in (
  70. from acao in query
  71. join itemAuditoria in ItemAuditoria on acao.Id equals itemAuditoria.Acao.Id
  72. join auditoria in Auditoria on itemAuditoria.Auditoria.Id equals auditoria.Id
  73. join maquina in Maquina on auditoria.Maquina.Id equals maquina.Id
  74. orderby maquina.Nome,acao.Numero
  75. select acao
  76. ).Distinct()
  77. select distinctAcao
  78. ).ToArray();
  79.  
  80. foreach(var q in query) Console.WriteLine("Id={0} Numero={1}",q.Id,q.Numero);
  81. Console.ReadKey(true);
  82. }
  83. }
Success #stdin #stdout 0.11s 34536KB
stdin
Standard input is empty
stdout
Id=5 Numero=185720
Id=1 Numero=285287
Id=7 Numero=302703
Id=2 Numero=562974