C# Academy · Lekcja

Wprowadzenie do LINQ: Where, Select, OrderBy, Take/Skip; wykonanie odroczone

Buduj małe potoki LINQ dla IEnumerable : filtruj za pomocą Where, przekształcaj za pomocą Select, sortuj za pomocą OrderBy i poznaj różnicę między wykonaniem odroczonym a materializacją.

Lekcja 3 z 38 kroki

Wprowadzenie do LINQ: Where, Select, OrderBy, Take/Skip; wykonanie odroczone to bezpłatna lekcja C# Academy na CoddyKit. To lekcja 3 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej C# Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs C# Academy zawiera 3 lekcji w sumie.

Przegląd LINQ

Cel: Używanie krótkich potoków LINQ do filtrowania, przekształcania i porządkowania danych.

  • Where (filtrowanie)
  • Select (mapowanie)
  • OrderBy, Take/Skip
  • Odroczone wykonanie i materializacja

Where + Select

Należy łączyć Where (filtrowanie), a następnie Select (przekształcanie). Potok należy czytać od lewej do prawej.

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    int[] data = new int[] { 1, 2, 3, 4, 5, 6 };

    // Filter even numbers, then square them
    var query = data.Where(x => x % 2 == 0)
                    .Select(x => x * x);

    foreach (int n in query)
    {
      Console.WriteLine(n); // 4, 16, 36
    }
  }
}

OrderBy + Take

Należy sortować za pomocą OrderBy (i ThenBy), a ograniczać wynik za pomocą Take.

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    string[] names = new string[] { "Zoe", "Ada", "Alan", "Bob" };

    var top2 = names.OrderBy(s => s.Length) // shortest first
                    .ThenBy(s => s)         // tie-breaker
                    .Take(2);

    foreach (string s in top2)
    {
      Console.WriteLine(s); // Ada, Bob
    }
  }
}

Projekcja (typ anonimowy)

Select może tworzyć obiekty anonimowe na potrzeby szybkiej zmiany struktury danych (Word, Length).

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    string[] words = new string[] { "map", "filter", "reduce" };

    var info = words.Select(w => new { Word = w, Length = w.Length });

    foreach (var x in info)
    {
      Console.WriteLine(x.Word + " (" + x.Length + ")");
    }
  }
}

Odroczone wykonanie

Odroczone wykonanie: Zapytanie jest wykonywane podczas iterowania. Zmiany w źródle dokonane przed wyliczeniem wpływają na wyniki.

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
  public static void Main(string[] args)
  {
    List<int> numbers = new List<int> { 1, 2, 3 };

    var q = numbers.Where(x => x > 1); // not executed yet

    numbers.Add(4); // modify source before enumeration

    foreach (int x in q) // executes here
    {
      Console.WriteLine(x); // 2, 3, 4
    }
  }
}

Materializacja i składnia

Należy używać ToList/ToArray, aby wykonać zapytanie i zapisać wyniki. Składnia zapytań to inny sposób zapisania tego samego potoku.

using System;
using System.Linq;

public class Program
{
  public static void Main(string[] args)
  {
    int[] data = new int[] { 3, 1, 2 };

    // Method syntax + materialize
    var sorted = data.OrderBy(x => x).ToList(); // executes now
    data[0] = 100; // will not affect 'sorted' (already materialized)

    foreach (int n in sorted) { Console.WriteLine(n); } // 1,2,3

    // Query syntax (equivalent)
    var query =
      from x in data
      where x < 50
      select x * 2;

    foreach (int n in query) { Console.WriteLine(n); } // 2,4
  }
}

Znaczenie odroczonego wykonania

Szybkie sprawdzenie: Co oznacza, że większość operatorów LINQ ma odroczone wykonanie?

Podsumowanie

Podsumowanie: Potoki należy budować za pomocą Where, Select, OrderBy oraz Take/Skip. LINQ działa odroczone — gdy potrzebne są stabilne wyniki, należy wykonać materializację za pomocą ToList/ToArray.

Bezpłatny start

Ucz się C# dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
93
Lekcje
346

Często zadawane pytania

Czy lekcja „Wprowadzenie do LINQ: Where, Select, OrderBy, Take/Skip; wykonanie odroczone” jest bezpłatna?

Tak — pełny tekst „Wprowadzenie do LINQ: Where, Select, OrderBy, Take/Skip; wykonanie odroczone” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu C# Academy, przejdź na CoddyKit PRO. Kurs C# Academy zawiera 3 lekcji w sumie.

Co nauczysz się w „Wprowadzenie do LINQ: Where, Select, OrderBy, Take/Skip; wykonanie odroczone”?

Buduj małe potoki LINQ dla IEnumerable : filtruj za pomocą Where, przekształcaj za pomocą Select, sortuj za pomocą OrderBy i poznaj różnicę między wykonaniem odroczonym a materializacją. Ćwiczysz C# Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć C# Academy?

Nie wymagamy żadnego doświadczenia. C# Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 3.

Ile czasu zajmuje lekcja „Wprowadzenie do LINQ: Where, Select, OrderBy, Take/Skip; wykonanie odroczone”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji C# Academy?

Tak. Każda lekcja C# Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Tablice, wycinki, List , Dictionary
  2. Wzorce foreach i inicjalizatory kolekcji
  3. Wprowadzenie do LINQ: Where, Select, OrderBy, Take/Skip; wykonanie odroczone
← Powrót do C# Academy