Kumpulkan senarai objek menggunakan LINQ
Dalam pengaturcaraan berorientasikan objek, selalunya perlu untuk mengumpulkan objek mengikut syarat perkongsian. Ini boleh dilakukan dengan cekap menggunakan LINQ (Language Integrated Query). Di bawah ini kita akan meneroka cara mengumpulkan senarai objek ke dalam senarai berkumpulan baharu yang mengandungi berbilang senarai objek.
Soalan:
Pertimbangkan kelas yang mewakili pengguna:
<code class="language-csharp">public class User { public int UserID { get; set; } public string UserName { get; set; } public int GroupID { get; set; } }</code>
Andaikan kami mempunyai senarai pengguna:
<code class="language-csharp">List<User> userList = new List<User>(); userList.Add(new User { UserID = 1, UserName = "UserOne", GroupID = 1 }); userList.Add(new User { UserID = 2, UserName = "UserTwo", GroupID = 1 }); userList.Add(new User { UserID = 3, UserName = "UserThree", GroupID = 2 }); userList.Add(new User { UserID = 4, UserName = "UserFour", GroupID = 1 }); userList.Add(new User { UserID = 5, UserName = "UserFive", GroupID = 3 }); userList.Add(new User { UserID = 6, UserName = "UserSix", GroupID = 3 });</code>
Matlamat kami adalah untuk mengumpulkan pengguna mengikut GroupID mereka, menghasilkan senarai pengguna yang dikumpulkan mengikut kumpulan.
Penyelesaian:
LINQ menyediakan mekanisme pengelompokan yang berkuasa menggunakan kaedah GroupBy. Coretan kod berikut menunjukkan cara untuk mencapai kumpulan yang diingini:
<code class="language-csharp">var groupedUserList = userList .GroupBy(u => u.GroupID) .Select(grp => grp.ToList()) .ToList();</code>
Pecahan kod:
IGrouping<int, User>
), kita perlu memilih pengguna daripada setiap kumpulan. Kami menggunakan kaedah ToList dalam Select untuk menukar setiap kumpulan kepada senarai pengguna. groupedUserList
kini mengandungi kumpulan yang diperlukan: senarai senarai pengguna, dengan setiap senarai dalaman mewakili pengguna yang tergolong dalam kumpulan yang sama.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghimpunkan Senarai Objek mengikut Harta Dikongsi Menggunakan LINQ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!