Ramai pemaju sering mengelirukan perbezaan antara
dan kaedah apabila belajar LINQ ke SQL. Artikel ini akan menjelaskan perbezaan mereka dengan jelas melalui contoh LINQ ke SQL. Select
Kaedah ini digunakan untuk menukar setiap elemen dalam urutan dan menghasilkan urutan baru yang mengandungi elemen penukaran. Kaedah bertindak pada urutan urutan, dan ia mengalihkannya ke dalam satu urutan dengan mengembalikan unsur -unsur dalam urutan norma. SelectMany
Select
SelectMany
Dalam contoh ini,
Kaedah Flattes struktur bersarang ini dan menghasilkan
, yang mengandungi hanya satu nombor telefon.<code class="language-csharp">public class PhoneNumber { public string Number { get; set; } } public class Person { public IEnumerable<PhoneNumber> PhoneNumbers { get; set; } public string Name { get; set; } } IEnumerable<Person> people = new List<Person>(); // Select 获取一个电话号码列表的列表。 IEnumerable<IEnumerable<PhoneNumber>> phoneLists = people.Select(p => p.PhoneNumbers); // SelectMany 将列表扁平化成单个电话号码。 IEnumerable<PhoneNumber> phoneNumbers = people.SelectMany(p => p.PhoneNumbers); // 使用带 resultSelector 参数的重载方法连接父项和子项数据: var directory = people .SelectMany(p => p.PhoneNumbers, (parent, child) => new { parent.Name, child.Number });</code>
Di samping itu, kita juga boleh menggunakan parameter phoneLists
dalam kaedah beban berat SelectMany
, yang mengandungi maklumat objek induk (orang) dalam hasilnya. Oleh itu, pembolehubah phoneNumbers
menyimpan senarai objek tanpa nama, yang mengandungi nama dan nombor telefon seseorang.
Contoh komprehensif ini menunjukkan perbezaan asas antara SelectMany
dan resultSelector
kaedah di LINQ hingga SQL. directory
Unsur tunggal dalam urutan penukaran, dan
Atas ialah kandungan terperinci LINQ SELECT vs. SelectMany: Bagaimana mereka berbeza apabila mengumpul koleksi bersarang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!