Почему возможно преобразование в строку «ОК», а не в строке «НЕ ОК»?IQueryable convertions
var queryable = new int[]{1, 2, 3}.AsQueryable();
var x = (Expression<Func<IQueryable<int>>>)(() => (from c in queryable select c));
var yy = (Expression<Func<IEnumerable<int>>>)x; // NOT OK (does not compile)
var zz = (Expression<Func<IEnumerable<int>>>)(() => (from c in queryable select c)); // OK
Update: Сообщение об ошибке:
Не удается преобразовать тип
System.Linq.Expressions.Expression<System.Func<System.Linq.IQueryable<int>>>
в 'System.Linq.Expressions.Expression<System.Func<System.Collections.Generic.IEnumerable<int>>
>'
обеспечивает соответствующее сообщение об ошибке. – Samuel
Полный учебник по ковариации смотрите здесь: [MSDN: ковариация и контравариантность в универсалах] (http://msdn.microsoft.com/en-us/library/dd799517 (v = vs.110) .aspx) – pid