using System.Collections.Generic;
using System.Data.SqlClient;
public static void Main()
var lstA = new List<A> { new A { Id = 1, Name = "AAA", Status = false }, new A { Id = 2, Name = "BBB", Status = false }, new A { Id = 3, Name = "CCC", Status = false } };
new B { Id= 6, AId = 1, Date = new DateTime(2018,5,3) },
new B { Id= 7, AId = 2, Date = new DateTime(2018,6,2) },
new B { Id= 8, AId = 2, Date = new DateTime(2018,6,4) },
new B { Id= 9, AId = 3, Date = new DateTime(2018,10,12) },
new B { Id= 10, AId = 3, Date = new DateTime(2018,7,7) }
var lstResult = lstA.GroupJoin(lstB, a => new { a.Id }, b => new { Id = b.AId }, (a, b) => new { a, b })
if (x.b.All(y => y.Date <= DateTime.Now))
foreach(var item in lstResult)
Console.WriteLine(string.Format("Id {0} - Status {1}", item.Id, item.Status));
public int Id { get; set; }
public string Name { get; set; }
public bool Status { get; set; }
public int Id { get; set; }
public int AId { get; set; }
public DateTime Date { get; set; }