Зачем в LINQ нужна лишняя запись?

37
23 сентября 2021, 03:00

Есть два одинаковых LINQ-запроса. Непонятно, зачем в первом запросе прописывать q => q.Courses, если в новой коллекции внутри new q все-равно не используется?

    static void Main(string[] args)
    {
        var data = Student.GetAllStudents().SelectMany(
            q => q.Courses, // зачем нужно это?
            (a, b) => new 
            { 
                Name = a.Name + " " + a.LName, 
                Course = b
            });
        var data2 = from a in Student.GetAllStudents()
                    from b in a.Courses
                    select new { Name = a.Name + " " + a.LName, Course = b };
        foreach (var i in data)
        {
            Console.WriteLine(i.Name + " " + i.Course);
        }
    }

Коллекция

class Student
{
    public string Name { get; set; }
    public string LName { get; set; }
    public string Gender { get; set; }
    public IEnumerable<string> Courses { get; set; }
    public static IEnumerable<Student> GetAllStudents()
    {
        List<Student> students = new List<Student>
        {
            new Student() {Name = "Dima", LName="Kozyr", Gender="M", Courses = new Collection<string> { "Math", "English", "Art" } },
            new Student() {Name = "Kate", LName="Iguna", Gender="F", Courses = new Collection<string> { "Math", "Physics", "Sport" } },
            new Student() {Name = "Mash", LName="Kozyr", Gender="F", Courses = new Collection<string> { "Math", "Computer", "Art" } },
            new Student() {Name = "Anto", LName="Kozyr", Gender="M", Courses = new Collection<string> { "Math", "English", "Art" } },
        };
        return students;
    }
}
READ ALSO
Как запретить открывать страницу в новом окне DotNetBrowser?

Как запретить открывать страницу в новом окне DotNetBrowser?

при некоторых кликах - открывается новое окно с дефолтными настройками, а не такими как в родительском окне, так же непонятно как управлять...

31
Не отрисовываются элементы на форме

Не отрисовываются элементы на форме

На форме не отображаются некоторые элементы, а некоторые отображаются не полностью

41
Не работает скрипт на C#

Не работает скрипт на C#

движок Unity выдает вот такую ошибку

45
Выходные параметры в потоке c#

Выходные параметры в потоке c#

Есть метод, который я хочу передать в потокУ него есть выходной параметр startDriver(out int driver); Каким образом это можно сделать?

56