public class stuff : IEnumerable<Thing>, IEnumerable<IThing> { … }
public static void Main() {
stuff s;
var names = s.Select(t=>t.Name);
}
And even though System.Linq is imported, I still get an error “stuff" does not contain a definition for Select and no extension method ‘Select’ accepting a first argument of type ‘stuff’ could be found (are you missing a using directive or an assembly reference?)
Well, no, but LINQ and extension methods on IEnumerable<T> doesn’t work when the T is ambiguous. If I were to cast the above “s” to one of IEnumerable<Thing> or IEnumerable<IThing>, then I could use LINQ, but until I do, I get nothing. The error message isn’t all that helpful either.
My general recommendation: don’t do this.