Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
115
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 7.47 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace labor2
  8. {
  9.     class Hallgato
  10.     {
  11.         public string Nev { get; set; }
  12.         public int Eletkor { get; set; }
  13.         public bool Kapcsolat { get; set; }
  14.         public override string ToString()
  15.         {
  16.             return Nev + "-" + Eletkor + "-" + Kapcsolat;
  17.         }
  18.     }
  19.     class Program
  20.     {
  21.        
  22.         static void Feldolgoz<T> (IEnumerable<T> gyujtemeny)
  23.         {
  24.             Console.WriteLine();
  25.             foreach (var item in gyujtemeny)
  26.             {
  27.                 Console.WriteLine(item);
  28.             }
  29.             Console.WriteLine();
  30.         }
  31.         static void Main(string[] args)
  32.         {
  33.             // BEVEZETŐ / ALAPOK
  34.             // =================================================================
  35.  
  36.  
  37.             List<int> iList = new List<int>();
  38.             Random r = new Random();
  39.             for (int i = 0; i < 10; i++)
  40.             {
  41.                 iList.Add(r.Next(900));
  42.  
  43.             }
  44.             IEnumerable<int> ien = iList.FindAll(x => x % 2 == 0);
  45.  
  46.             var v1 = "string";
  47.             var v2 = 901;
  48.             var v3 = true;
  49.             var v4 = new NullReferenceException();
  50.             var v5 = new
  51.             {
  52.                 Nev = "Laci",
  53.                 Eletkor = 90
  54.             };
  55.             // LINQ method syntax (+lambda)
  56.             var parosak = iList.Where(x => x % 2 == 0);
  57.             Feldolgoz(parosak);
  58.  
  59.  
  60.             //LINQ query syntax
  61.             var parosak2 = from x in iList where x%2 == 0 select x;
  62.  
  63.             ;
  64.  
  65.  
  66.             // =================================================================
  67.  
  68.  
  69.  
  70.  
  71.             // 1. feladat:
  72.             // adott egy adatbázis List-ként, kérdezzük le a Klaudiák számát
  73.             // ekkora mérettel hozzunk létre tömböt
  74.             // és másoljuk át a tömbbe a Klaudiákat
  75.             //
  76.             // figyeljünk arra, hogy az adatbázisban lehet, hogy kis és nagybetűvel egyaránt lesz név
  77.  
  78.             #region feladat
  79.  
  80.             List<Hallgato> hallgatok = new List<Hallgato>();
  81.             hallgatok.Add(new Hallgato() { Nev = "X BélA" });
  82.             hallgatok.Add(new Hallgato() { Nev = "B BélA" });
  83.             hallgatok.Add(new Hallgato() { Nev = "C Cecil" });
  84.             hallgatok.Add(new Hallgato() { Nev = "A Aladár" });
  85.             hallgatok.Add(new Hallgato() { Nev = "V Viktor" });
  86.  
  87.             int db = hallgatok.Count(x => x.Nev.ToUpper().Contains("BÉLA"));
  88.             Hallgato[] kimenet = new Hallgato[db];
  89.             var belak = hallgatok.Where(x => x.Nev.ToUpper().Contains("BÉLA"));
  90.             int index = 0;
  91.             foreach (var item in belak)
  92.             {
  93.                 kimenet[index++] = item;
  94.             }
  95.             ;
  96.             #endregion
  97.  
  98.  
  99.  
  100.  
  101.             // =================================================================
  102.  
  103.  
  104.             // 2. feladat:
  105.             // hallgatók lekérése, akiknek életkoruk 20-50 között van
  106.             // és még nincsenek párkapcsolatban
  107.             // ehhez egészítsük ki a hallgató osztályt
  108.  
  109.             #region feladat
  110.  
  111.             // hallgatók adatainak kiegészítése (életkor + kapcs. státusz)
  112.             for (int i = 0; i < hallgatok.Count; i++)
  113.             {
  114.                 Predicate<int> kapcsDonto = x => x == 0;
  115.                 hallgatok[i].Eletkor = r.Next(10,80);
  116.                 hallgatok[i].Kapcsolat = (bool)kapcsDonto?.Invoke(r.Next(2));
  117.             }
  118.  
  119.             // hallgatók lekérése
  120.  
  121.             var lekertHallgatok = hallgatok.Where(x => x.Kapcsolat == false && x.Eletkor <= 50 && x.Eletkor >= 20);
  122.             ;
  123.  
  124.             #endregion
  125.  
  126.  
  127.  
  128.  
  129.  
  130.             // =================================================================
  131.  
  132.  
  133.  
  134.             // 3. feladat:
  135.             // hallgatók lekérése, akiknek életkoruk 20-50 között van
  136.             // és még nincsenek párkapcsolatban
  137.             // ehhez egészítsük ki a hallgató osztályt
  138.  
  139.             #region feladat
  140.  
  141.             // hallgatók adatainak kiegészítése
  142.  
  143.  
  144.             // hallgatók lekérése
  145.  
  146.  
  147.  
  148.  
  149.  
  150.             // 3.1. feladat:
  151.             // kérjük le azokat, akik kapcsolatban vannak
  152.             // a kapott eredményt rendezzük sorrendbe név alapján
  153.             // és alakítsuk nagybetűssé a neveket
  154.  
  155.             var kapcs = hallgatok.Where(x => x.Kapcsolat = true).OrderBy(x => x.Nev).Select(x => x.Nev.ToUpper());
  156.             ;
  157.             #endregion
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.             // =================================================================
  165.  
  166.  
  167.  
  168.             // 4. feladat:
  169.             // kérjük le a kapcsolatban / nem kapcs. lévő hallgatókat
  170.  
  171.             #region feladat
  172.  
  173.             var csop1 = hallgatok.GroupBy(x => x.Kapcsolat);
  174.             var csop2 = from x in hallgatok
  175.                         group x by x.Kapcsolat into gResult //into g
  176.                         select new
  177.                         {
  178.                             CSOPORT = gResult.Key,
  179.                             DARAB = gResult.Count()
  180.                         };
  181.             ;
  182.                         #endregion
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.             // =================================================================
  190.  
  191.  
  192.  
  193.             // 5. feladat:
  194.             // kérjük le azokat a hallgatókat, akiknek a nevében van 'e' vagy 'E' betű
  195.             //
  196.             // alakítsuk a nevét nagybetűssé egy új objektum keretein belül
  197.             // tároljuk el mellé még az életkorát is (más-más nevű tulajdonságban)
  198.             //
  199.             // rendezzük életkor szerint
  200.  
  201.                         #region feladat
  202.             var eHallgatok = from x in hallgatok            // nem lehet debuggolni rendesen ---> lépésenként kell csinálni
  203.                              where x.Nev.Contains('e') || x.Nev.Contains('E')
  204.                              orderby x.Eletkor
  205.                              select new
  206.                              {
  207.                                  HNEV = x.Nev.ToUpper(),
  208.                                  HKOR = x.Eletkor,
  209.                                  HKAPCS = x.Kapcsolat
  210.                              };
  211.             ;
  212.  
  213.  
  214.  
  215.             // 5.1. feladat:
  216.             // végezzük el ugyan ezt a lekérdezést, de csoportosítsuk kapcsolatban lévő státusz szerint
  217.             // és az egyes csoportokban nézzük meg, hogy mennyi az átlagos életkor
  218.  
  219.             var asd = from x in eHallgatok
  220.                       group x by x.HKAPCS into g
  221.                       select new
  222.                       {
  223.                           Atlag = g.Average(x => x.HKOR),
  224.                           Darab = g.Count(),
  225.                           Csoport = g.Key
  226.                       };
  227.             ;
  228.             /*
  229.              * Természetesen van lehetőség az egyes query-ket egymásba is ágyazni,
  230.              * hasonlóan SQL lekérdezésekhez (persze fontos, hogy ez nem ugyan az).
  231.              *
  232.              * Ez esetben próbáljuk ki:
  233.              *
  234.              * Az 'eHallgatok' helyére másoljuk be a teljes lekérdezést zárójelek közé rakva.
  235.              * Lefuttatva ugyan azt fogjuk kapni!
  236.              *
  237.              * Érdemes átlátni ezt a fajta verziót is, amikor
  238.              * komplexebb egymásbaágyazások vannak.            
  239.              *
  240.              * */
  241.  
  242.             #endregion
  243.  
  244.  
  245.         }
  246.     }
  247. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement