Dalam pembangunan perisian, data yang menjadi tisu ke dalam struktur seperti pokok sering diperlukan. Tugas yang sama adalah untuk menukar pokok ke senarai rata atau set. Ini boleh dilaksanakan menggunakan rangka kerja pertanyaan integrasi bahasa (LINQ) dalam .NET.
dengan mengandaikan bahawa kita mempunyai struktur pokok mudah berikut yang dinyatakan oleh kelas MyNode:
Kami mendapat ienumeration
<code class="language-csharp">class MyNode { public MyNode Parent; public IEnumerable<MyNode> Elements; public int Group { get; set; } }</code>
Untuk mengikuti senarai leflation kumpulan, kita boleh menggunakan pengendali di mana:
<code class="language-csharp">public static IEnumerable<MyNode> Flatten(this IEnumerable<MyNode> elements) => elements.SelectMany(c => Flatten(c.Elements)).Concat(elements);</code>
Penyelesaian ini berkesan dan elegan diratakan, dan nod yang tidak diingini ditapis mengikut atribut kumpulan.
<code class="language-csharp">var flattenedList = treeElements.Flatten().Where(node => node.Group == 1);</code>
Atas ialah kandungan terperinci Bagaimanakah Linq dapat meratakan struktur pokok dan penapis oleh harta tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!