Your SlideShare is downloading. ×
0
LINQ käytännössä
LINQ käytännössä
LINQ käytännössä
LINQ käytännössä
LINQ käytännössä
LINQ käytännössä
LINQ käytännössä
LINQ käytännössä
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

LINQ käytännössä

511

Published on

LINQ käytännössä. …

LINQ käytännössä.

Sanko F# -tapahtuman diasarja

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
511
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
1
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Func<…> on “funktio tietotyyppinä”Nämä koodilohkot ovat sama asia.Ensimmäiset tyyppiparametrit ovat parametreja. Viimeisenä tyyppiparametrina on paluuarvoTyyppimäärittelyissä jo tiedetään tyyppi…
  • List<T> sijaan käytä kantaluokkaa IEnumerable<T>- “Lueteltava”- Se on kantaluokka listoille (ja LINQ:lle) Siinä ei ole .RemoveAt(…) metodia, joten muut eivät pääse puuttumaan väliin
  • UsingSystem.LinqSuodatetaan turhat
  • Debugatessa huomaa, miten suoritus tapahtuu! Älä teeif(list.Count() == 0) vaan if(!list.Any()) niin ei evaluoida koko listaa läpi
  • Deklaratiivisuus on parempi: Korkeamman tason abstraktio Määritellään mitä kone tekee, ei miten kone tekeeSQL-muotoinen syntaksi ei ole se pointti, vaan funktionaalisuus!SQL-muotoinen syntaksi on vain eri tapa ilmaista .Where(i=>i%2==0);
  • Transcript

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

    ×