Adakah .NET Mempunyai Fungsi Terbina untuk Semak sama ada Senarai a Mengandungi Semua Item dalam Senarai b?
Tujuan soalan ini adalah untuk tentukan sama ada .NET menyediakan fungsi terbina untuk memastikan sama ada satu senarai mengandungi semua elemen senarai lain.
dengan syarat kod sampel cuba memenuhi tujuan ini dengan mengulangi senarai kedua dan menyemak sama ada setiap elemen terdapat dalam senarai pertama. Pendekatan ini berfungsi, tetapi seseorang tertanya-tanya sama ada fungsi sedemikian sudah wujud dalam .NET.
Jawapan:
Untuk .NET versi 3.5 dan ke atas, fungsi sedemikian sememangnya tersedia :
public static bool ContainsAllItems<T>(List<T> a, List<T> b) { return !b.Except(a).Any(); }
Kod ini membandingkan elemen dalam senarai b dengan elemen dalam senarai a, mengembalikan benar hanya jika semua elemen dalam b juga hadir dalam a.
Pelaksanaan Alternatif:
Pelaksanaan yang lebih konvensional akan melibatkan pengisytiharan kaedah sebagai generik dan menerima IEnumerable
public static class LinqExtras { public static bool ContainsAllItems<T>(this IEnumerable<T> a, IEnumerable<T> b) { return !b.Except(a).Any(); } }
Menggunakan pendekatan ini, anda boleh menyemak dengan mudah sama ada satu senarai mengandungi semua elemen yang lain menggunakan:
IEnumerable<int> a = new List<int> { 1, 2, 3, 4 }; IEnumerable<int> b = new List<int> { 2, 4, 6, 8 }; bool containsAll = a.ContainsAllItems(b); // False
Atas ialah kandungan terperinci Adakah .NET Menawarkan Fungsi Terbina dalam untuk Memeriksa sama ada Satu Senarai Mengandungi Semua Item daripada Yang Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!