C# Academy · Lektion

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.

Lektion 3 af 38 trin

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

Hurtigt tjek: Hvad er sandt om LINQ-forespørgselssyntaks sammenlignet med 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.

Gratis at komme i gang

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

  1. IEnumerable -pipelines og udskudt udførelse
  2. Select, Where, OrderBy, Take/Skip
  3. Forespørgsels- kontra metodesyntaks
← Tilbage til C# Academy