using System.Collections.Generic;
public string Jmeno { get; set; }
public int Zdravi { get; set; }
public static void Main()
Rytir borivoj = new Rytir() { Jmeno = "Borivoj", Zdravi = 100 };
Rytir vojtech = new Rytir() { Jmeno = "Vojtech", Zdravi = 100 };
Rytir miroslav = new Rytir() { Jmeno = "Miroslav", Zdravi = 80 };
Rytir bronislav = new Rytir() { Jmeno = "Bronislav", Zdravi = 50 };
Rytir vaclav = new Rytir() { Jmeno = "Vaclav", Zdravi = 80 };
Rytir radovan = new Rytir() { Jmeno = "Radovan", Zdravi = 10 };
List<Rytir> rytiri = new List<Rytir>() { borivoj, vojtech, miroslav, bronislav, vaclav, radovan };
List<IOsoba> osoby = new List<IOsoba>() { borivoj, vojtech };
List<IOsoba> osoby2 = rytiri.OfType<IOsoba>().ToList();
var zdraviRytiriDotaz = rytiri.Where(r => r.Zdravi == 100);
var zdraviRytiriSeJmenemNaVDotaz = zdraviRytiriDotaz.Where(r => r.Jmeno[0] == 'V');
foreach (Rytir rytir in zdraviRytiriDotaz)
Console.WriteLine(rytir.Jmeno);
rytiri.Add(new Rytir() { Jmeno = "Bonifac", Zdravi = 100 });
foreach (Rytir rytir in zdraviRytiriSeJmenemNaVDotaz)
Console.WriteLine(rytir.Jmeno);
Rytir prvniRytir = zdraviRytiriSeJmenemNaVDotaz.First();
Rytir posledniRytir = zdraviRytiriSeJmenemNaVDotaz.Last();
foreach(Rytir rytir in rytiri.OrderByDescending(r => r.Zdravi).Where(r => r.Zdravi > 80))
Console.WriteLine($"{rytir.Jmeno}: {rytir.Zdravi}");
foreach(var skupinka in rytiri.GroupBy(r => r.Zdravi).OrderBy(s => s.Key))
Console.WriteLine($"Skupina: {skupinka.Key}");
foreach (Rytir rytir in skupinka)
Console.WriteLine(rytir.Jmeno);
var dotazNaSkupinky = rytiri.GroupBy(r => r.Zdravi, r => r, (klic, seznamRytiru) => new
foreach (var polozka in dotazNaSkupinky)
Console.WriteLine("Zdravi: " + polozka.Zdravi);
Console.WriteLine("Rytiri: " + string.Join(", ", polozka.Rytiri.Select(r => r.Jmeno)));
var jmenaRytiru = from rytir in rytiri
where rytir.Jmeno[0] == 'V'
var noviRytiri = from rytir in rytiri
foreach(var rytir in noviRytiri)
Console.WriteLine($"{rytir.Jmeno}, {rytir.Zdravi}, {rytir.Zbroj}");