Avatar ·

ما الفرق بين Select و SelectMany في LINQ؟

مرحبًا بالجميع! أنا أتعلم C# وLINQ، ولا أستطيع فهم الفرق بين طريقتي Select وSelectMany. يبدو أن كلاهما يُستخدمان لإسقاط البيانات، لكن النتيجة مختلفة لسبب ما. لدي نموذج بسيط: كلاس Student مع حقل Name (سلسلة) وقائمة Courses (List). أريد الحصول على جميع الدورات التي سجل فيها الطلاب. إليك ما جربته: ```csharp public class Student { public string Name { get; set; } public List Courses { get; set; } } var students = new List { new Student { Name = "إيفان", Courses = new List { "رياضيات", "فيزياء" } }, new Student { Name = "ماريا", Courses = new List { "كيمياء", "أحياء" } } }; var selectResult = students.Select(s => s.Courses); var selectManyResult = students.SelectMany(s => s.Courses); ``` عندما أطبع selectResult، أرى عنصرين — كل منهما قائمة من السلاسل. بينما selectManyResult يعطيني أربع سلاسل — جميع الدورات متتالية. لماذا؟ ما الفرق الجوهري؟