Linq – The Basics
Arve Bjørnerud
20. November 2009
Language Integrated Query
Side 2
Skriv en ”sql” spørring rett i koden mot:
– In memory lister
– Database
– Events
– Filesystem
– ++++
– Lag din egen vha adapter støtte
Alt som arver fra IEnumerable kan man kjøre spørringer på.
– For eksempel List<>
Ett enkelt eksempel
Side 3
List<string> names = new List<string> {"Per", "Pål", "Espen"};
var p = from name in names
where name == "Espen"
select name;
Console.WriteLine(p.First());
Kan også skrives slik
Side 4
List<string> names = new List<string> {"Per", "Pål", "Espen"};
Console.WriteLine(names.Where(x => x == "Espen").First());
Lambda uttrykk
Side 5
x => x == "Espen”
Oversettes til
delegate(string x) {
return x==”Espen”;
}
Kurs i C# og LINQ
Syntaktisk sukker
Uttrykk kan slås sammen:
List<string> names = new List<string> {"Per", "Pål", "Espen"};
var s = names.Where(n => n.StartsWith("P"))
.Where(m => m.EndsWith("r"))
.Select(o => o.Substring(1,1));
Side 6
Anonyme typer
Side 7
List<string> names = new List<string>();
names.Add("Per");
names.Add("Pål");
var persons = from name in names
select new
{
NameUppercase = name.ToUpper(),
NameLenght = name.Length
};
var person = persons.First();
Console.WriteLine("Uppercase name={0}. Name lenght={1}.", person.NameUppercase, person.NameLenght);
Kurs i C# og LINQ
Spørreoperatorer
Where
Any
Restrict
Select
Select Many
Project
Distinct
Union
Intersect
Except
Sets
Count
Sum
Min
Max
Average
Aggregate
Aggr.
OrderBy
OrderByDescending
ThenBy
ThenByDescending
Revert
Order
Side 8
Oppgaveløsing
SVN Checkout:
http://linqkurs.googlecode.com/svn/trunk/
Start på oppgave ”Part1_TheBasics”
Vent med de andre oppgavene
Sitter du fast?
– Spør nabo
– Spør google
– Spør Arve, Elisabeth, Lise eller Åsmund
– Ikke se på løsningen før du har prøvd selv
Selskapspresentasjon 2007 Side 9