LINQ käytännössä ”Teoriassa teoria ja käytäntö ovat sama asia, mutta käytännössä ne eivät ole”. Paitsi matematiikassa…
LINQ käytännössä
”Teoriassa teoria ja käytäntö ovat sama asia, mutta käytännössä ne eivät ole”. Paitsi matematiikassa…
Func<TSisään1, TSisään2, TUlos>
public int PlusViis(int i){ return i+5;}
Func<int, int> PlusViis = delegate(int i) { return i + 5; };
Func<int, int> PlusViis = i => i + 5;
IEnumerable<T>
”Ikiluuppi”
public static IEnumerable<int> LuonnollisetLuvut() { int i=0; while(true){ yield return i++; } }
yield return• Palauta ja jatka
Suodatettu
public static IEnumerable<int> Parittomat() { return LuonnollisetLuvut().Where(i=>i%2==1);}
Toimii!
static void Main(string[] args){ var luvut = Parittomat().Take(5); //var suoritettu = luvut.ToList(); foreach(var i in luvut) Console.WriteLine(i);}
IEnumerable<T> on laiska
Mitä on LINQ:n sisällä?
Extension-metodeita, esim:
public static class HakuExtension{ public static IEnumerable<T> Missä<T>(
this IEnumerable<T> lista, Func<T, bool> ehto){
foreach(var i in lista){ if (ehto(i)) yield return i; } }}
Imperatiivinen vs. deklaratiivinen
Miten Mitävar result = new List<int>();foreach(var i in lista){ if(i % 2 == 0){ result.Add(i); }}
var result = from i in lista where i % 2 == 0 select i;