Advertisement
Guest User

Untitled

a guest
Dec 19th, 2014
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.22 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. public class Pessoa {
  6. public string Nome { get; set; }
  7. public DateTime? DataNascimento { get; set; }
  8. public int? Cpf { get; set; }
  9.  
  10. public Pessoa(string nome, DateTime? dataNascimento = null, int? cpf = null){
  11. Nome = nome;
  12. DataNascimento = dataNascimento;
  13. Cpf = cpf;
  14. }
  15. }
  16.  
  17. public class App {
  18. public static void Main(string[] args) {
  19. var pessoas = new List<Pessoa>() {
  20. new Pessoa("João"),
  21. new Pessoa("Maria"),
  22. new Pessoa("Jorge"),
  23. new Pessoa("Tiago") };
  24.  
  25. // Selecionar pessoas que o nome possuem a letra 'a'
  26. // LINQ na forma declarativa
  27. var resultado1 = from pessoa in pessoas
  28. where pessoa.Nome.Contains('a')
  29. select pessoa;
  30. // LINQ usando sintaxe tradicional
  31. var resultado2 = pessoas.Where(x => x.Nome.Contains('a'));
  32.  
  33. Console.WriteLine(resultado1.Count());
  34. Console.WriteLine(resultado2.Count());
  35.  
  36. Console.ReadKey();
  37. }
  38. }
  39.  
  40. using System;
  41. using System.Collections.Generic;
  42. using System.Linq;
  43. using System.Diagnostics;
  44.  
  45. public class Pessoa {
  46. public string Nome { get; set; }
  47. public DateTime? DataNascimento { get; set; }
  48. public int? Cpf { get; set; }
  49.  
  50. public Pessoa(string nome, DateTime? dataNascimento = null, int? cpf = null){
  51. Nome = nome;
  52. DataNascimento = dataNascimento;
  53. Cpf = cpf;
  54. }
  55. }
  56.  
  57. public class App {
  58. public static void Main(string[] args) {
  59. var limiteDeItens = 1000000;
  60. var pessoas = new List<Pessoa>(limiteDeItens);
  61. var tempo = new Stopwatch();
  62.  
  63. tempo.Start();
  64.  
  65. //preenche a lista
  66. for(var i = 0; i < limiteDeItens; i++) {
  67. pessoas.Add(new Pessoa("Pessoa" + i.ToString()));
  68. }
  69. tempo.Stop();
  70. Console.WriteLine("Preencher a lista em ms: {0}", tempo.ElapsedMilliseconds);
  71. // LINQ na forma declarativa
  72. tempo.Restart();
  73. var resultado1 = from pessoa in pessoas
  74. where pessoa.Nome.Contains('9')
  75. select pessoa;
  76. tempo.Stop();
  77. Console.WriteLine("Montar o LINQ declarativo em Ticks: {0}", tempo.ElapsedTicks);
  78. // LINQ usando sintaxe tradicional
  79. tempo.Restart();
  80. var resultado2 = pessoas.Where(x => x.Nome.Contains('9'));
  81. tempo.Stop();
  82. Console.WriteLine("Montar o LINQ imperativo em Ticks: {0}", tempo.ElapsedTicks);
  83.  
  84. // transferir todo resultado para uma lista apenas para efeito de comparação
  85. var lista1 = new List<Pessoa>(limiteDeItens);
  86. tempo.Restart();
  87. foreach(var pessoa in resultado1) {
  88. lista1.Add(pessoa);
  89. }
  90. tempo.Stop();
  91. Console.WriteLine("Transferir uma lista para outra com a primeira expressão em ms: {0}", tempo.ElapsedMilliseconds);
  92. var lista2 = new List<Pessoa>(limiteDeItens);
  93. tempo.Restart();
  94. foreach(var pessoa in resultado1) {
  95. lista2.Add(pessoa);
  96. }
  97. tempo.Stop();
  98. Console.WriteLine("Transferir uma lista para outra com a segunda expressão em ms: {0}", tempo.ElapsedMilliseconds);
  99.  
  100. Console.ReadKey();
  101. }
  102. }
  103.  
  104. public static IEnumerable<T> Where(this IEnumerable<T> source, Func<T, bool> predicate) {
  105. foreach (T element in source) {
  106. if (predicate(element)) {
  107. yield return element;
  108. }
  109. }
  110. }
  111.  
  112. var resultado1 = from pessoa in pessoas
  113. where pessoa.Nome.Contains('a')
  114. select pessoa;
  115.  
  116. var resultado2 = pessoas.Where(x => x.Nome.Contains('a'));
  117.  
  118. var resultado1 = from pessoa in pessoas
  119. .Where(x => x.Nome.Contains('a')
  120. .Select(x => x);
  121.  
  122. var resultado1 = from pessoa in pessoas
  123. .Where(pessoa => pessoa.Nome.Contains('a'))
  124. .Select(pessoa => pessoa);
  125.  
  126. pessoa => pessoa.Nome.Contains('a')) //lambda que recebe um parâmetro chamado pessoa (o tipo é inferido)
  127. () => Console.WriteLine("Hello World") //lambda sem parâmetro
  128. (int x, int y) => x * y //recebendo dois parâmetros de tipos específicos e fazendo uma operação
  129. delegate() { Console.WriteLine("Hello World"); } //usando a sintaxe de delegate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement