using static System.Console;
using System.Collections.Generic;
using System.Diagnostics;
public string Nome { get; set; }
public DateTime? DataNascimento { get; set; }
public int? Cpf { get; set; }
public Pessoa(string nome, DateTime? dataNascimento = null, int? cpf = null){
DataNascimento = dataNascimento;
public static void Main(string[] args) {
var limiteDeItens = 1_000_000;
var pessoas = new List<Pessoa>(limiteDeItens);
var tempo = new Stopwatch();
for(var i = 0; i < limiteDeItens; i++) {
pessoas.Add(new Pessoa("Pessoa" + i.ToString()));
WriteLine($"Preencher a lista em ms: {tempo.ElapsedMilliseconds}");
var resultado1 = from pessoa in pessoas
where pessoa.Nome.Contains('9')
WriteLine($"Montar o LINQ declarativo em Ticks: {tempo.ElapsedTicks}");
var resultado2 = pessoas.Where(x => x.Nome.Contains('9'));
WriteLine($"Montar o LINQ imperativo em Ticks: {tempo.ElapsedTicks}");
var lista1 = new List<Pessoa>(limiteDeItens);
foreach(var pessoa in resultado1) {
WriteLine($"Transferir uma lista para outra com a primeira expressão em ms: {tempo.ElapsedMilliseconds}");
var lista2 = new List<Pessoa>(limiteDeItens);
foreach(var pessoa in resultado2) {
WriteLine($"Transferir uma lista para outra com a segunda expressão em ms: {tempo.ElapsedMilliseconds}");