если бы вы не фильтровали до своего теоретического ключевого слова asLocal, тогда да, все они были бы локальными (именно поэтому в сценарии сначала выполняется фильтрация на стороне сервера). Если ваша фильтрация на стороне сервера имела только 1 'd' (и, следовательно, один родительский 'o' для него и один родительский 'c' для этого), то я действительно не вижу, в чем проблема с тем, что все они находятся в области видимости. В качестве альтернативы, поскольку синтаксис понимания запросов явно переводится в синтаксис цепочки методов, вы можете рассмотреть вопрос («какие варианты доступны для« преобразования »AsEnumerable в понимание запроса?»)

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

Наивный подход (которым я сейчас и занимаюсь) - просто разбить его на несколько запросов, например:

var fromServer = from t in context.Table
                 where t.Col1 = 123
                 where t.Col2 = "blah"
                 select t;

var clientSide = from t in fromServer.AsEnumerable()
                 where t.Col3.Split('/').Last() == "whatever"
                 select t.Col4;

Тем не менее, во многих случаях это больше кода / проблем, чем оно того стоит. Я бы очень хотел сделать «переход на сторону клиента» в середине. Я пробовал различные способы использования продолжения запроса, но после выполнения 'select t into foo' в конце первого запроса foo остается отдельным элементом, а не коллекцией, поэтому я не могу AsEnumerable () его ,

Моя цель - написать что-то похожее на:

var results = from t in context.Table
              where t.Col1 = 123
              where t.Col2 = "blah"
              // Magic happens here to switch to the client side
              where t.Col3.Split('/').Last() == "whatever"
              select t.Col4;

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

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