using System.Collections.Generic;
public static void Main(string[] args)
var vehicles = GetVehicles();
var assignedToVehicle = GetAssignedToVehicle();
var result = vehicles.Where(car => car.DeletedAt == null &&
!assignedToVehicle.Any(assigned => assigned.VehicleId == car.Id))
foreach (var car in result)
Console.WriteLine("Vehicle name: " + car.Name);
public static List<Vehicle> GetVehicles()
return new List<Vehicle>() {
new Vehicle(){ Id = 1, Name = "Audi", DeletedAt = DateTime.Now },
new Vehicle(){ Id = 2, Name = "Mazda", DeletedAt = DateTime.Now.AddDays(-1)},
new Vehicle(){ Id = 3, Name = "Suzuki", DeletedAt = null },
new Vehicle(){ Id = 4, Name = "Ford", DeletedAt = DateTime.Now.AddDays(-2) },
new Vehicle(){ Id = 5, Name = "Mercedes", DeletedAt = null },
new Vehicle(){ Id = 6, Name = "Jaguar", DeletedAt = null }
public static List<AssignedToVehicle> GetAssignedToVehicle()
return new List<AssignedToVehicle>() {
new AssignedToVehicle(){ UserId = 100, VehicleId = 1, UnassignedAt = DateTime.Now },
new AssignedToVehicle(){ UserId = 101, VehicleId = 2, UnassignedAt = DateTime.Now.AddDays(-3) },
new AssignedToVehicle(){ UserId = 102, VehicleId = 3, UnassignedAt = DateTime.Now.AddDays(-4) },
new AssignedToVehicle(){ UserId = 103, VehicleId = 4, UnassignedAt = DateTime.Now.AddDays(-5) }
public int Id { get; set; }
public string Name { get; set; }
public DateTime? DeletedAt { get; set; }
public class AssignedToVehicle
public int UserId { get; set; }
public int VehicleId { get; set; }
public DateTime? UnassignedAt { get; set; }