Я пытаюсь создать поставщика LINQ. Я использую руководство LINQ: Создание серии поставщиков IQueryable , и я добавил код до LINQ: Создание поставщика IQueryable - Часть IV.
Я чувствую, как это работа и идея, стоящая за ней. Теперь я застрял на проблеме, которая связана не с кодом, а с пониманием.
Я запускаю это утверждение:
QueryProvider provider = new DbQueryProvider();
Query customers = new Query(provider);
int i = 3;
var newLinqCustomer = customers.Select(c => new { c.Id, c.Name}).Where(p => p.Id == 2 | p.Id == i).ToList();
Каким-то образом код или выражение знает, что Где
предшествует Выберите
. Но как и где?
В коде, который сортирует выражения, нет способа, на самом деле ToString ()
в режиме отладки показывает, что Select стоит перед Where
.
Я пытался заставить код не работать. Нормально Я сначала выполнил Where
, а затем Select
.
Итак, как выражение сортирует это? Я не вносил никаких изменений в код в руководстве.