Ответ Роба хорош, но требует полного перечисления. Вы можете привести синтаксис метода расширения и ленивую оценку:

я есть провайдер Linq, который успешно отправляет и получает данные из моего выбранного источника данных, но теперь я хотел бы сделать, поскольку у меня есть отфильтрованный набор результатов, - разрешить Linq to Objects обрабатывать остальную часть дерева выражений (для таких вещей, как Joins, проекция и т. д.)

Я думал, что я мог бы просто заменить константу выражения, содержащую мой IQueryProvider, на наборы результатов IEnumerable через ExpressionVisitor, а затем вернуть это новое выражение. Также верните провайдера IEnumerable из моего IQueryable ... но это, похоже, не работает :-(

Есть идеи?

Изменить: некоторые хорошие ответы здесь, но с учетом формы ...

var qry = from c in MyProv.Table<Customer>()
          Join o in MyProv.Table<Order>() on c.OrderID equals o.ID
          select new 
          {
            CustID = c.ID,
            OrderID = o.ID
          }

В моем провайдере я могу легко получить обратно 2 набора результатов от клиентов и заказов, если бы данные были из источника SQL, я бы просто сконструировал и передал синтаксис SQL Join, но в этом случае данные не из источника SQL, поэтому я нужно выполнить объединение в коде ... но, как я уже сказал, у меня есть 2 набора результатов, и Linq to Objects может выполнить объединение ... (и позже проекцию) было бы очень приятно просто заменить константы ExpressionMyProv.Table<Customer> а такжеMyProv.Table<Order> с участиемList<Customer> а такжеList<Order> и пустьList<> провайдер обрабатывает выражение ... это возможно? как?

Ответы на вопрос(5)

Ваш ответ на вопрос