При явном объявлении типа запроса с помощью IEnumerable
, например
IEnumerable<string> q =
from c in db.Customers
select c.ContactName;
var q2 = q.Where(s => s.StartsWith(start));
return q2;
В запросе будет использоваться Enumerable.where
. Почему запрос не знает, что это IQueryable
и использует Queryable.where
?
Это кажется противоречащим понятиям OOP, где дочерний объект, объявленный с родительским типом, должен знать, что это на самом деле тип потомка и использовать методы дочернего типа.