Поскольку выражение запроса LINQ переводится «под прикрытием», чтобы вызывать те же методы, которые вызовет соответствующий запрос метода (по крайней мере, я так думаю), я ожидаю, что эти два запроса будут возвращать один и тот же тип. По какой-то причине, хотя это:
var result = from i in db.Invoices
select new { i.InvoiceNum };
устанавливает результат как IQueryable<'a>
с каждым членом, имеющим свойство InvoiceNum
, тогда как этот
IQueryable<string> result2 = db.Invoices.Select(i => i.InvoiceNum);
Достаточно умен, чтобы вернуть IQueryable<string>
(очевидно, так как он компилируется)
Ясно, что одно из моих предположений неверно, и я надеялся, что эксперт поможет мне немного лучше понять.
(это EF4, но то же самое происходит с linq-to-objects, и я предполагаю, что то же самое будет и с L2S)