using System.Collections.Generic;
var students = new List<Student>();
var courses =new List<Course>();
students.Add(new Student{Id=3,Name="test"});
students.Add(new Student{Id=4,Name="test2"});
courses.Add(new Course{UserId=3,datetime=DateTime.Now});
courses.Add(new Course{UserId=3,datetime=DateTime.Now.AddDays(1)});
var query =courses.GroupBy(c => c.UserId).Select(g => g.OrderByDescending(c => c.datetime).FirstOrDefault());
var res = (from u in students
join c in query on u.Id equals c.UserId into j1
from j2 in j1.DefaultIfEmpty()
select new { u.Name,j2}).ToList();
res.ForEach(r => {Console.WriteLine(r.Name); if (r.j2 != null){ Console.WriteLine(r.j2.datetime);}});
public string Name{get;set;}
public string Std{get;set;}
public int UserId{get;set;}
public DateTime datetime{get;set;}