Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace labor2
- {
- class Hallgato
- {
- public string Nev { get; set; }
- public int Eletkor { get; set; }
- public bool Kapcsolat { get; set; }
- public override string ToString()
- {
- return Nev + "-" + Eletkor + "-" + Kapcsolat;
- }
- }
- class Program
- {
- static void Feldolgoz<T> (IEnumerable<T> gyujtemeny)
- {
- Console.WriteLine();
- foreach (var item in gyujtemeny)
- {
- Console.WriteLine(item);
- }
- Console.WriteLine();
- }
- static void Main(string[] args)
- {
- // BEVEZETŐ / ALAPOK
- // =================================================================
- List<int> iList = new List<int>();
- Random r = new Random();
- for (int i = 0; i < 10; i++)
- {
- iList.Add(r.Next(900));
- }
- IEnumerable<int> ien = iList.FindAll(x => x % 2 == 0);
- var v1 = "string";
- var v2 = 901;
- var v3 = true;
- var v4 = new NullReferenceException();
- var v5 = new
- {
- Nev = "Laci",
- Eletkor = 90
- };
- // LINQ method syntax (+lambda)
- var parosak = iList.Where(x => x % 2 == 0);
- Feldolgoz(parosak);
- //LINQ query syntax
- var parosak2 = from x in iList where x%2 == 0 select x;
- ;
- // =================================================================
- // 1. feladat:
- // adott egy adatbázis List-ként, kérdezzük le a Klaudiák számát
- // ekkora mérettel hozzunk létre tömböt
- // és másoljuk át a tömbbe a Klaudiákat
- //
- // figyeljünk arra, hogy az adatbázisban lehet, hogy kis és nagybetűvel egyaránt lesz név
- #region feladat
- List<Hallgato> hallgatok = new List<Hallgato>();
- hallgatok.Add(new Hallgato() { Nev = "X BélA" });
- hallgatok.Add(new Hallgato() { Nev = "B BélA" });
- hallgatok.Add(new Hallgato() { Nev = "C Cecil" });
- hallgatok.Add(new Hallgato() { Nev = "A Aladár" });
- hallgatok.Add(new Hallgato() { Nev = "V Viktor" });
- int db = hallgatok.Count(x => x.Nev.ToUpper().Contains("BÉLA"));
- Hallgato[] kimenet = new Hallgato[db];
- var belak = hallgatok.Where(x => x.Nev.ToUpper().Contains("BÉLA"));
- int index = 0;
- foreach (var item in belak)
- {
- kimenet[index++] = item;
- }
- ;
- #endregion
- // =================================================================
- // 2. feladat:
- // hallgatók lekérése, akiknek életkoruk 20-50 között van
- // és még nincsenek párkapcsolatban
- // ehhez egészítsük ki a hallgató osztályt
- #region feladat
- // hallgatók adatainak kiegészítése (életkor + kapcs. státusz)
- for (int i = 0; i < hallgatok.Count; i++)
- {
- Predicate<int> kapcsDonto = x => x == 0;
- hallgatok[i].Eletkor = r.Next(10,80);
- hallgatok[i].Kapcsolat = (bool)kapcsDonto?.Invoke(r.Next(2));
- }
- // hallgatók lekérése
- var lekertHallgatok = hallgatok.Where(x => x.Kapcsolat == false && x.Eletkor <= 50 && x.Eletkor >= 20);
- ;
- #endregion
- // =================================================================
- // 3. feladat:
- // hallgatók lekérése, akiknek életkoruk 20-50 között van
- // és még nincsenek párkapcsolatban
- // ehhez egészítsük ki a hallgató osztályt
- #region feladat
- // hallgatók adatainak kiegészítése
- // hallgatók lekérése
- // 3.1. feladat:
- // kérjük le azokat, akik kapcsolatban vannak
- // a kapott eredményt rendezzük sorrendbe név alapján
- // és alakítsuk nagybetűssé a neveket
- var kapcs = hallgatok.Where(x => x.Kapcsolat = true).OrderBy(x => x.Nev).Select(x => x.Nev.ToUpper());
- ;
- #endregion
- // =================================================================
- // 4. feladat:
- // kérjük le a kapcsolatban / nem kapcs. lévő hallgatókat
- #region feladat
- var csop1 = hallgatok.GroupBy(x => x.Kapcsolat);
- var csop2 = from x in hallgatok
- group x by x.Kapcsolat into gResult //into g
- select new
- {
- CSOPORT = gResult.Key,
- DARAB = gResult.Count()
- };
- ;
- #endregion
- // =================================================================
- // 5. feladat:
- // kérjük le azokat a hallgatókat, akiknek a nevében van 'e' vagy 'E' betű
- //
- // alakítsuk a nevét nagybetűssé egy új objektum keretein belül
- // tároljuk el mellé még az életkorát is (más-más nevű tulajdonságban)
- //
- // rendezzük életkor szerint
- #region feladat
- var eHallgatok = from x in hallgatok // nem lehet debuggolni rendesen ---> lépésenként kell csinálni
- where x.Nev.Contains('e') || x.Nev.Contains('E')
- orderby x.Eletkor
- select new
- {
- HNEV = x.Nev.ToUpper(),
- HKOR = x.Eletkor,
- HKAPCS = x.Kapcsolat
- };
- ;
- // 5.1. feladat:
- // végezzük el ugyan ezt a lekérdezést, de csoportosítsuk kapcsolatban lévő státusz szerint
- // és az egyes csoportokban nézzük meg, hogy mennyi az átlagos életkor
- var asd = from x in eHallgatok
- group x by x.HKAPCS into g
- select new
- {
- Atlag = g.Average(x => x.HKOR),
- Darab = g.Count(),
- Csoport = g.Key
- };
- ;
- /*
- * Természetesen van lehetőség az egyes query-ket egymásba is ágyazni,
- * hasonlóan SQL lekérdezésekhez (persze fontos, hogy ez nem ugyan az).
- *
- * Ez esetben próbáljuk ki:
- *
- * Az 'eHallgatok' helyére másoljuk be a teljes lekérdezést zárójelek közé rakva.
- * Lefuttatva ugyan azt fogjuk kapni!
- *
- * Érdemes átlátni ezt a fajta verziót is, amikor
- * komplexebb egymásbaágyazások vannak.
- *
- * */
- #endregion
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement