related to Getting all types that implement an interface we can easily get all Types in the Assembly that implements a specific interface.
Example:
interface IFace
{
}
class Face : IFace
{
}
class TwoFace : Face
{
}
For this structure, we will find both classes via reflection, i.e. all classes that are derived from the first implementation too, using
GetTypes().Where(
type => type.GetInterfaces().Contains(typeof(IFace))
)
So the question is: how can I restrict the result to the base class that initially implements the interface?! In this example: only class type Face is relevant.

Firstly, I'd use Type.IsAssignableFrom rather than GetInterfaces, but then all you need to do is exclude types whose parent type is already in the set:
var allClasses = types.Where(type => typeof(IFace).IsAssignableFrom(type))
.ToList(); // Or use a HashSet, for better Contains perf.
var firstImplementations = allClasses
.Except(allClasses.Where(t => allClasses.Contains(t.BaseType)));
Or as noted in comments, equivalently:
var firstImplementations = allClasses.Where(t => !allClasses.Contains(t.BaseType));
Note that this will not return a class which derives from a class which implements an interface, but reimplements it.
See more on this question at Stackoverflow