.NET Fiddle

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
    
public class Bar<T>
{
    private readonly T _value;
        
    public T Value() {
        return _value;
    }
      
    public Bar(T value) {
        _value = value;
    }
}

public abstract class Car
{
	public Ferrari Parent { get; set; }
}

public class Ferrari : Car
{
	
}

public class Lambo : Car
{
	
}
    
public class Program
{
        
    public static void Main(string[] args)
    {
        Car p1 = new Ferrari();
        Car p2 = new Lambo();
		Car p3 = new Lambo();
        p2.Parent = new Ferrari();
        List<Car> items = new List<Car>();
        items.Add(p1);
        items.Add(p2);
		items.Add(p3);
          
        Bar<Car> b = new Bar<Car>(null);
        List<Car> list2 = items.Where(item => item.Parent == b.Value()).ToList();
            
        bool z = null == b.Value();
        Console.WriteLine(list2.Count);
    }
}
;