Forespørgsels- kontra metodesyntaks
Skriv den samme LINQ med forespørgsels- eller metodesyntaks, se hvordan compileren oversætter den, og lær, hvornår De bør vælge hver stil.
Forespørgsels- kontra metodesyntaks er en gratis C# Academy-lektion på CoddyKit. Dette er lektion 3 af 3. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i C# Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. C# Academy-kurset indeholder 3 lektioner i alt.
To syntakser
LINQ's to udtryksformer:
- Metodesyntaks: xs.Where(...).Select(...)
- Forespørgselssyntaks: from x in xs where ... select ...
- De er ækvivalente for de fleste operatorer.
Metodesyntaks
Metodesyntaks kæder udvidelsesmetoder som Where og Select.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
string[] words = new string[] { "dog", "tiger", "ant", "eagle" };
var result = words
.Where(w => w.Length >= 4)
.Select(w => w.ToUpper());
foreach (string w in result) Console.WriteLine(w);
}
}
Forespørgselssyntaks
Forespørgselssyntaks læses som SQL: from, where, select. Kompileren omdanner den til metodekald.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
string[] words = new string[] { "dog", "tiger", "ant", "eagle" };
var query =
from w in words
where w.Length >= 4
select w.ToUpper();
foreach (string w in query) Console.WriteLine(w);
}
}
Sortering på begge måder
Begge syntakser understøtter filtrering, sortering og projektion. De giver de samme resultater.
using System;
using System.Linq;
public sealed class City
{
public string Name;
public int Pop;
public City(string name, int pop) { Name = name; Pop = pop; }
}
public class Program
{
public static void Main(string[] args)
{
City[] cities = new City[]
{
new City("Rome", 2873000),
new City("Oslo", 634000),
new City("Riga", 605000),
new City("Rio", 6748000)
};
// Method
var m = cities
.Where(c => c.Pop >= 700000)
.OrderBy(c => c.Name)
.Select(c => c.Name);
// Query
var q =
from c in cities
where c.Pop >= 700000
orderby c.Name ascending
select c.Name;
foreach (string name in m) Console.WriteLine(name);
Console.WriteLine("---");
foreach (string name in q) Console.WriteLine(name);
}
}
Blanding af syntakser
Ikke alle operatorer har et forespørgselsnøgleord. Det er almindeligt at blande syntakser: skriv en forespørgsel, og kald derefter Count, Skip, Take eller ThenBy.
using System;
using System.Linq;
public class Program
{
public static void Main(string[] args)
{
int[] data = new int[] { 5, 3, 9, 1, 7, 2, 8 };
// Query + method mix: query part, then Count() method
var q =
from n in data
where n > 3
select n;
int howMany = q.Count(); // no query keyword for Count
Console.WriteLine("Count >3 = " + howMany);
// Paging usually uses method syntax
var page = data.OrderBy(n => n).Skip(2).Take(3);
foreach (int x in page) Console.WriteLine(x);
}
}
Hvornår skal du bruge hvad
Retningslinjer:
- Brug metodesyntaks til korte kæder, og når operatorer mangler forespørgselsnøgleord.
- Brug forespørgselssyntaks, når den er lettere at læse ved flertrinsfiltrering/-sortering.
- Bland dem efter behov; de er ækvivalente.
Sandheden om forespørgsels- og metodesyntaks
Opsummering
Opsummering: Forespørgsels- og metodesyntaks er to måder at se den samme LINQ på. Vælg den stil, der er lettest at læse, og bland dem, når operatorer mangler forespørgselsnøgleord.
Lær C# med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 93
- Lektioner
- 346
Ofte stillede spørgsmål
Er lektionen “Forespørgsels- kontra metodesyntaks” gratis?
Ja — hele teksten til “Forespørgsels- kontra metodesyntaks” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af C# Academy-kurset, skal du opgradere til CoddyKit PRO. C# Academy-kurset indeholder 3 lektioner i alt.
Hvad lærer jeg i “Forespørgsels- kontra metodesyntaks”?
Skriv den samme LINQ med forespørgsels- eller metodesyntaks, se hvordan compileren oversætter den, og lær, hvornår De bør vælge hver stil. Du øver dig i C# Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på C# Academy?
Der kræves ingen tidligere erfaring. C# Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 3 af 3.
Hvor lang tid tager lektionen “Forespørgsels- kontra metodesyntaks”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne C# Academy-lektion?
Ja. Alle C# Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- IEnumerable -pipelines og udskudt udførelse
- Select, Where, OrderBy, Take/Skip
- Forespørgsels- kontra metodesyntaks