Advertisement
fcamuso

Linq B

Nov 21st, 2021
1,110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.48 KB | None | 0 0
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Diagnostics.CodeAnalysis;
  5. using System.Linq;
  6.  
  7. namespace Linq_A
  8. {
  9.   class AmicoComparer : IEqualityComparer<Amico>
  10.   {
  11.     public bool Equals(Amico x, Amico y)
  12.     {
  13.       return string.Compare(x.Nome, y.Nome) == 0 && x.Telefono == y.Telefono;
  14.     }
  15.  
  16.     public int GetHashCode(Amico obj)
  17.     {
  18.       return obj.Nome.GetHashCode();
  19.     }
  20.   }
  21.  
  22.   class Amico
  23.   {
  24.     public String Nome { get; set; }
  25.     public String Telefono { get; set; }
  26.  
  27.     public Amico(string nome, string telefono)
  28.     { Nome = nome; Telefono = telefono; }
  29.  
  30.   }
  31.  
  32.   class Program
  33.   {
  34.     static void Main(string[] args)
  35.     {
  36.       //giochi è una sequenza di elementi stringhe
  37.       string[] giochi = { "Borderlands 1", "Borderlands 2", "Borderlands 3", "Destiny 1",
  38.                           "Destiny 2", "Destiny 1", "Doom" };
  39.  
  40.       //il risultato è una sequenza (IEnumerable)
  41.       //sintassi fluente (fluent)
  42.       var sequenzaRisultato = giochi.Where(gioco => gioco.StartsWith("Bord"));
  43.  
  44.       //method sintax, query expression sintax
  45.       var ris2 = from gioco in giochi where gioco.Contains("Borderlands") select gioco;
  46.  
  47.       sequenzaRisultato = giochi
  48.         .Where(gioco => gioco.StartsWith("Bord"))
  49.         .OrderBy(gioco => gioco.Length)
  50.         .Select(gioco => gioco.ToUpper());
  51.                
  52.  
  53.       //il risultato in quanto IEnumerable è "consumabile" con un foreach
  54.       //foreach (string gioco in ris2) Console.WriteLine(gioco);
  55.  
  56.       sequenzaRisultato = giochi
  57.         .Where((gioco, i) => gioco.StartsWith("Bord") && i % 2 == 0);
  58.  
  59.       sequenzaRisultato = giochi
  60.         .Take(3);
  61.  
  62.       sequenzaRisultato = giochi
  63.         .Skip(3);
  64.  
  65.       sequenzaRisultato = giochi
  66.         .SkipWhile(gioco => gioco.Contains("Borderlands")).Take(1);
  67.  
  68.       sequenzaRisultato = giochi
  69.         .Distinct();
  70.  
  71.       //string[] giochi = { "Borderlands 1", "Borderlands 2", "Borderlands 3", "Destiny 1",
  72.       //                    "Destiny 2", "Destiny 1", "Doom" };
  73.  
  74.      
  75.       //foreach (string gioco in sequenzaRisultato) Console.WriteLine(gioco);
  76.  
  77.       Amico[] amici = { new Amico("Giorgio", "0345-82347"), new Amico("Massimo", "0345-234643"),
  78.                         new Amico("Giorgio", "0345-82347")};
  79.  
  80.  
  81.       var amiciFiltrati = amici
  82.         .Distinct(new AmicoComparer());
  83.  
  84.       foreach (Amico amico in amiciFiltrati) Console.WriteLine(amico.Telefono);
  85.     }
  86.   }
  87. }
  88.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement