简体   繁体   中英

How to turn this SQL query into a Entity Framework lambda expression?

How to make this query with lambda expression in Entity Framework?

select 
    s.StudentID, s.StudentName, s.StudentSurName, s.Point 
from 
    Student s
join 
    StudentContest sc on s.StudentID = sc.StudentId
join 
    Contest c on c.ContextID = sc.ContestId 
where 
    c.ContextDate < GETDATE()

I made a model based on classes to show results

   class Program
    {
        static void Main(string[] args)
        {
            DateTime date = DateTime.Now;
            DataBase db = new DataBase();

            var results = (from s in db.Student
                           join sc in db.StudentContest on s.StudentID equals sc.StudentId
                           join c in db.Contest.Where(x => x.ContextDate < date) on sc.ContextID equals c.ContestId
                           select new { StudentID = s.StudentID, StudentName = s.StudentName, StudentSurName = s.StudentSurName, Point = s.Point }
                           ).ToList();
        }
    }
    public class DataBase
    {
        public List<StudentContest> StudentContest { get; set; }
        public List<Student> Student { get; set; }
        public List<Contest> Contest { get; set; }
    }
    public class StudentContest
    {
        public string StudentId { get; set;}
        public string ContextID { get; set;}
    }
    public class Student
    {
        public string StudentID { get; set;}
        public string StudentName { get; set;}
        public string StudentSurName { get; set;}
        public string Point { get; set;}
    }
    public class Contest
    {
        public string ContestId { get; set;}
        public DateTime ContextDate { get; set; }
    }

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