Rumah > pembangunan bahagian belakang > C++ > Apakah perbezaan antara pengendali Select dan SelectMany Linq?

Apakah perbezaan antara pengendali Select dan SelectMany Linq?

Susan Sarandon
Lepaskan: 2025-01-28 17:51:10
asal
988 orang telah melayarinya

What's the Difference Between LINQ's Select and SelectMany Operators?

linq ke sql: pemahaman dan Select SelectMany

Menguasai LINQ ke SQL memerlukan pemahaman perbezaan utama antara

dan Select. Kedua -dua data projek, tetapi pendekatan mereka berbeza dengan ketara. SelectMany

Melaksanakan transformasi satu sama lain. Ia mengambil setiap elemen dari urutan input dan menggunakan fungsi untuk menghasilkan elemen baru dalam urutan output. Ini sesuai untuk mengekstrak sifat tertentu atau melakukan pengiraan pada item individu. Select

, sebaliknya, meratakan urutan urutan ke dalam urutan tunggal. Ini tidak ternilai apabila bekerja dengan struktur data hierarki atau bersarang. Ia membolehkan anda melintasi pelbagai peringkat dan mengakses unsur -unsur yang mendasari. SelectMany

mari kita ilustrasikan dengan kelas

yang mengandungi koleksi objek Person: PhoneNumber

<code class="language-csharp">public class PhoneNumber
{
    public string Number { get; set; }
}

public class Person
{
    public IEnumerable<PhoneNumber> PhoneNumbers { get; set; }
    public string Name { get; set; }
}</code>
Salin selepas log masuk

Contoh: Select

<code class="language-csharp">IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers);</code>
Salin selepas log masuk
ini menggunakan

untuk mendapatkan urutan urutan nombor telefon -satu untuk setiap orang. Hasilnya tetap bersarang. Select

Contoh: SelectMany

<code class="language-csharp">IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers);</code>
Salin selepas log masuk

meratakan struktur bersarang, menghasilkan urutan tunggal yang mengandungi semua nombor telefon dari semua orang. SelectMany

menggabungkan data ibu bapa dan kanak -kanak dengan : SelectMany

Ciri yang kuat dari

adalah keupayaannya untuk memasukkan data induk ke dalam unjuran. Menggunakan beban dengan parameter kedua, anda boleh membuat objek baru menggabungkan sifat ibu bapa dan kanak -kanak: SelectMany

<code class="language-csharp">var directory = people
    .SelectMany(p => p.PhoneNumbers, (parent, child) => new { parent.Name, child.Number });</code>
Salin selepas log masuk
Ini menjana direktori yang menyenaraikan nama setiap orang dan nombor telefon yang berkaitan. Output menggabungkan data dari kedua -dua kelas

dan Person. PhoneNumber

Atas ialah kandungan terperinci Apakah perbezaan antara pengendali Select dan SelectMany Linq?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan