ASP.NET MVC Web Development LINQ | www.starwave.nl/mq
Vandaag LINQ Todo t/m vrijdag Waarom LINQ? LINQ gebruik je om data op te halen of te verwerken. We zullen LINQ nodig gaan hebben voor onze zoekfunctionaliteit.
SQL en LINQ SQL = Structured Query Language Standaard querytaal voor relationele databases SELECT Number, Email FROM SomeTable WHERE Number < 10 LINQ = Language Integrated Query In C# geïntegreerde querytaal voor alle soorten data var results = from c in SomeTable where c.Number < 10 select new {c.Number, c.Email};
Waarom LINQ? SELECT Number, Email FROM SomeTable WHERE Number < 10 Dit moeten we nog omzetten in binnen C# bruikbare data. var results = from c in SomeTable where c.Number < 10 select new {c.Number, c.Email}; Dit kunnen we direct in C# gebruiken
LINQ notatie var results = from c in SomeTable where c.Number < 10 select new {c.Number, c.Email}; Is op de achtergrond hetzelfde als (en wordt dus omgezet naar): var results = SomeCollection.Where(c => c.SomeProperty < 10) .Select(c => new {c.SomeProperty, c.OtherProperty}); Kijk even goed naar de .Where method, die heeft een lambda expression als parameter: (c => c.SomeProperty < 10)
Lambda expressions Dit is een lambda expression: c => c.SomeProperty < 10 Een manier om methods korter te schrijven. Eigenlijk staat er: bool Methodenaam(int getal) { if(getal < 10) { return true; } else { return false; }
Lambda expressions Dit is een lambda expression: c => c.SomeProperty < 10 Lambda expressions volgen het patroon: parameters => uitgevoerde code Je hoeft dus geen methodenaam of return type op te geven. Dat is ook de reden voor lambda expressions: minder typwerk dan volledige methods schrijven. Maar zelf gebruik ik liever de LINQ notatie: where SomeProperty < 10
LINQ gebruiken 101 LINQ samples https://code.msdn.microsoft.com/101-LINQ-Samples-3fb9811b Of probeer je queries in LINQPad (helaas heeft alleen de pro versie autocompletion).
Todo T/m vrijdag: Doorwerken hoofdstuk 5 Profielen kunnen zoeken op criteria (datingsite) Toetsen kunnen invoeren en afnemen (e-learning)