Akademi C# · Pelajaran

Sintaks pertanyaan berbanding sintaks kaedah

Tulis LINQ yang sama menggunakan sintaks pertanyaan atau sintaks kaedah; lihat terjemahan pengkompil dan fahami masa untuk memilih setiap gaya.

Pelajaran 3 daripada 38 langkah

Sintaks pertanyaan berbanding sintaks kaedah ialah pelajaran Akademi C# percuma di CoddyKit. Ini ialah pelajaran 3 daripada 3. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi C#, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi C# merangkumi sejumlah 3 pelajaran.

Dua sintaks

Dua bentuk LINQ:

  • Sintaks kaedah: xs.Where(...).Select(...)
  • Sintaks pertanyaan: from x in xs where ... select ...
  • Kedua-duanya setara bagi kebanyakan pengendali.

Sintaks kaedah

Sintaks kaedah merangkaikan kaedah pelanjutan seperti Where dan 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);
  }
}

Sintaks pertanyaan

Sintaks pertanyaan dibaca seperti SQL: from, where, select. Pengompil menukarkannya menjadi panggilan kaedah.

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);
  }
}

Mengisih dengan kedua-dua gaya

Kedua-dua gaya menyokong penapisan, pengisihan dan pemilihan. Kedua-duanya menghasilkan hasil yang sama.

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);
  }
}

Mencampurkan gaya

Tidak setiap pengendali mempunyai kata kunci pertanyaan. Lazim untuk mencampurkan gaya: tulis pertanyaan kemudian panggil Count, Skip, Take atau 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);
  }
}

Bila hendak menggunakan yang mana

Garis panduan:

  • Gunakan sintaks kaedah untuk rantaian pendek dan apabila pengendali tiada kata kunci pertanyaan.
  • Gunakan sintaks pertanyaan apabila gaya ini lebih mudah dibaca untuk penapisan/pengisihan berbilang langkah.
  • Campurkan jika perlu; kedua-duanya setara.

Hakikat pertanyaan berbanding kaedah

Pemeriksaan ringkas: Apakah yang benar tentang sintaks pertanyaan LINQ berbanding sintaks kaedah?

Imbas kembali

Imbas kembali: Sintaks pertanyaan dan sintaks kaedah ialah dua pandangan terhadap LINQ yang sama. Pilih gaya yang paling mudah dibaca dan campurkan apabila pengendali tiada kata kunci pertanyaan.

Percuma untuk bermula

Pelajari C# dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
93
Pelajaran
346

Soalan Lazim

Adakah pelajaran “Sintaks pertanyaan berbanding sintaks kaedah” percuma?

Ya — teks penuh “Sintaks pertanyaan berbanding sintaks kaedah” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Akademi C#, tingkat taraf kepada CoddyKit PRO. Kursus Akademi C# merangkumi sejumlah 3 pelajaran.

Apakah yang akan saya pelajari dalam “Sintaks pertanyaan berbanding sintaks kaedah”?

Tulis LINQ yang sama menggunakan sintaks pertanyaan atau sintaks kaedah; lihat terjemahan pengkompil dan fahami masa untuk memilih setiap gaya. Anda berlatih Akademi C# menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Akademi C#?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi C# di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 3.

Berapa lamakah pelajaran “Sintaks pertanyaan berbanding sintaks kaedah” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi C# ini?

Ya. Setiap pelajaran Akademi C# menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Saluran paip IEnumerable ; pelaksanaan tertunda
  2. Select, Where, OrderBy, Take/Skip
  3. Sintaks pertanyaan berbanding sintaks kaedah
← Kembali ke Akademi C#