Your SlideShare is downloading. ×
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ä

507

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
507
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ä
      ”Teoriassa teoria ja käytäntö ovat sama asia, mutta käytännössä ne eivät ole”. Paitsi matematiikassa…
    • 2. 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;
    • 3. IEnumerable<T>
    • 4. ”Ikiluuppi”
      publicstaticIEnumerable<int> LuonnollisetLuvut() {
      inti=0;
      while(true){
      yieldreturn i++;
      }
      }
    • 5. Suodatettu
      publicstaticIEnumerable<int> Parittomat() {
      returnLuonnollisetLuvut().Where(i=>i%2==1);
      }
    • 6. Toimii!
      static void Main(string[] args)
      {
          var luvut = Parittomat().Take(5);
          //var suoritettu = luvut.ToList();
          foreach(var i in luvut) 
              Console.WriteLine(i);
      }
    • 7. Mitä on LINQ:nsisällä?
      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;
            }    
      }
      }
    • 8. Imperatiivinen vs. deklaratiivinen
      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;

    ×