Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- public class Pessoa {
- 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){
- Nome = nome;
- DataNascimento = dataNascimento;
- Cpf = cpf;
- }
- }
- public class App {
- public static void Main(string[] args) {
- var pessoas = new List<Pessoa>() {
- new Pessoa("João"),
- new Pessoa("Maria"),
- new Pessoa("Jorge"),
- new Pessoa("Tiago") };
- // Selecionar pessoas que o nome possuem a letra 'a'
- // LINQ na forma declarativa
- var resultado1 = from pessoa in pessoas
- where pessoa.Nome.Contains('a')
- select pessoa;
- // LINQ usando sintaxe tradicional
- var resultado2 = pessoas.Where(x => x.Nome.Contains('a'));
- Console.WriteLine(resultado1.Count());
- Console.WriteLine(resultado2.Count());
- Console.ReadKey();
- }
- }
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Diagnostics;
- public class Pessoa {
- 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){
- Nome = nome;
- DataNascimento = dataNascimento;
- Cpf = cpf;
- }
- }
- public class App {
- public static void Main(string[] args) {
- var limiteDeItens = 1000000;
- var pessoas = new List<Pessoa>(limiteDeItens);
- var tempo = new Stopwatch();
- tempo.Start();
- //preenche a lista
- for(var i = 0; i < limiteDeItens; i++) {
- pessoas.Add(new Pessoa("Pessoa" + i.ToString()));
- }
- tempo.Stop();
- Console.WriteLine("Preencher a lista em ms: {0}", tempo.ElapsedMilliseconds);
- // LINQ na forma declarativa
- tempo.Restart();
- var resultado1 = from pessoa in pessoas
- where pessoa.Nome.Contains('9')
- select pessoa;
- tempo.Stop();
- Console.WriteLine("Montar o LINQ declarativo em Ticks: {0}", tempo.ElapsedTicks);
- // LINQ usando sintaxe tradicional
- tempo.Restart();
- var resultado2 = pessoas.Where(x => x.Nome.Contains('9'));
- tempo.Stop();
- Console.WriteLine("Montar o LINQ imperativo em Ticks: {0}", tempo.ElapsedTicks);
- // transferir todo resultado para uma lista apenas para efeito de comparação
- var lista1 = new List<Pessoa>(limiteDeItens);
- tempo.Restart();
- foreach(var pessoa in resultado1) {
- lista1.Add(pessoa);
- }
- tempo.Stop();
- Console.WriteLine("Transferir uma lista para outra com a primeira expressão em ms: {0}", tempo.ElapsedMilliseconds);
- var lista2 = new List<Pessoa>(limiteDeItens);
- tempo.Restart();
- foreach(var pessoa in resultado1) {
- lista2.Add(pessoa);
- }
- tempo.Stop();
- Console.WriteLine("Transferir uma lista para outra com a segunda expressão em ms: {0}", tempo.ElapsedMilliseconds);
- Console.ReadKey();
- }
- }
- public static IEnumerable<T> Where(this IEnumerable<T> source, Func<T, bool> predicate) {
- foreach (T element in source) {
- if (predicate(element)) {
- yield return element;
- }
- }
- }
- var resultado1 = from pessoa in pessoas
- where pessoa.Nome.Contains('a')
- select pessoa;
- var resultado2 = pessoas.Where(x => x.Nome.Contains('a'));
- var resultado1 = from pessoa in pessoas
- .Where(x => x.Nome.Contains('a')
- .Select(x => x);
- var resultado1 = from pessoa in pessoas
- .Where(pessoa => pessoa.Nome.Contains('a'))
- .Select(pessoa => pessoa);
- pessoa => pessoa.Nome.Contains('a')) //lambda que recebe um parâmetro chamado pessoa (o tipo é inferido)
- () => Console.WriteLine("Hello World") //lambda sem parâmetro
- (int x, int y) => x * y //recebendo dois parâmetros de tipos específicos e fazendo uma operação
- delegate() { Console.WriteLine("Hello World"); } //usando a sintaxe de delegate
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement