简体   繁体   中英

Convert Linq Query Expression into Linq Lambda Expression

I have written this Linq Query for two class stduents and universites to extract students those are in XXX university.

I like to use the linq lambda expression instead query. I tried to convert but failed. Can anyone help.

 IEnumerable<Student> Students = from student in this.students
                                               join university in universities
                                               on student.UniversityId equals university.Id
                                               where university.Name == "XXX"
                                               select student;

Now, How should I use Where operator?

var students = this.students.Join(universities,
                                  s => s.UniversityId,
                                  u => u.Id,
                                  (std, uni) => std);

You can use below code sample.

using System.Collections.Generic;
using System.Linq;

namespace ConsoleApp1
{
    class University
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

    class Student
    {
        public int Id { get; set; }
        public int UniversityId { get; set; }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IList<University> universities = new List<University>
            {
                new University { Id = 1, Name = "u1" },
                new University { Id = 2, Name = "u2" }
            };
            IList<Student> students = new List<Student>
            {
                new Student { Id = 1, UniversityId = 1 },
                new Student { Id = 2, UniversityId = 1 },
                new Student { Id = 3, UniversityId = 2 },
                new Student { Id = 4, UniversityId = 2 }
            };
            IEnumerable<Student> stus = universities
                .Join(students, university => university.Id, student => student.UniversityId, (university, student) => new { university, student })
                .Where(j => j.university.Name == "u2")
                .Select(j => j.student);
        }
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM