linq: Data pengumpulan dengan kunci dengan dan GroupBy
ToLookup
mari kita ilustrasikan dengan kelas
: Person
class Person { public int PersonID { get; set; } public string Car { get; set; } }
, di mana sesetengah individu mungkin mempunyai pelbagai entri (mis., Memiliki pelbagai kereta): Person
List<Person> persons = new List<Person>() { new Person { PersonID = 1, Car = "Ferrari" }, new Person { PersonID = 1, Car = "BMW" }, new Person { PersonID = 2, Car = "Audi" } };
dan senaraikan kereta mereka, kami menggunakan kaedah Linq PersonID
: GroupBy
var results = persons.GroupBy(p => p.PersonID, p => p.Car);
adalah results
. Setiap IEnumerable<IGrouping<int, string>>
mewakili kumpulan dengan IGrouping
biasa (boleh diakses melalui PersonID
), dan mengandungi urutan rentetan kereta (result.Key
result
foreach (var result in results) { int personID = result.Key; List<string> cars = result.ToList(); // Convert to List for easier access Console.WriteLine($"Person ID: {personID}, Cars: {string.Join(", ", cars)}"); }
): ToLookup
ILookup<int, string>
var carsByPersonID = persons.ToLookup(p => p.PersonID, p => p.Car);
kedua -dua
List<string> carsForPerson1 = carsByPersonID[1].ToList(); Console.WriteLine($"Cars for Person 1: {string.Join(", ", carsForPerson1)}");
menawarkan cara yang cekap untuk mengumpulkan data berdasarkan kunci, menjadikan manipulasi data di LINQ lebih efisien. GroupBy
Menyediakan akses seperti kamus langsung, manakala ToLookup
menawarkan lebih banyak fleksibiliti untuk senario pengelompokan kompleks. ToLookup
Atas ialah kandungan terperinci Bagaimanakah saya boleh mengumpulkan data dengan kunci khusus menggunakan kaedah GroupBy dan Tolookup Linq?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!