Di dalam struktur data seperti pokok, senarai rata nod sering diperlukan dari tahap bersarang. Sebagai contoh, pertimbangkan objek "MyNode" dengan atribut "Elemen", yang mengandungi koleksi sub -node. Untuk mendapatkan senarai rata dengan semua nod dengan nilai atribut tertentu, Linq menyediakan penyelesaian yang elegan.
penyelesaian
untuk meratakan pokok dalam pertanyaan linq dan skrin nilai atribut tertentu, sila ikuti langkah -langkah di bawah:
Berikut adalah penjelasan terperinci:
<code class="language-csharp">// 扁平化树 IEnumerable<mynode> flatTree = e.SelectMany(c => Flatten(c.Elements)).Concat(new[] { e }); // 按属性值筛选扁平化列表 var result = flatTree.Where(n => n.group == 1);</code>
Versi generik pokok tersuai
Untuk pokok yang berbeza dari "Mynode", anda boleh menggunakan versi generik fungsi rata.Penggunaan contoh
<code class="language-csharp">public static IEnumerable<mynode> Flatten(this IEnumerable<mynode> e) => e.SelectMany(c => c.Elements.Flatten()).Concat(e);</code>
untuk meratakan pokok "mynode" dan skrin nod "kumpulan" sama dengan 1:
Dengan memahami konsep rata pokok dan operasi Linq yang kuat, anda dapat mengekstrak dan mengendalikan data dengan cekap dari struktur hierarki kompleks.
Atas ialah kandungan terperinci Bagaimanakah Linq dapat meratakan data hierarki dan penapis dengan cekap dengan nilai harta tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!