LINQ присоединиться к области - PullRequest
2 голосов
/ 01 июня 2011

Похоже, что объединение не может использовать наборы, определенные внутри запроса, или я что-то не так делаю?

from a in new[] {
    new { Id = 1 },
    new { Id = 2 } }

let bees = new[] {
    new { Id = 2 },
    new { Id = 3 } }

join b in bees on a.Id equals b.Id

select 1;

Это дает ошибку времени компиляции. «Элемент« пчелы »не существует в текущем контексте». Что не так с запросом?

Ответы [ 2 ]

2 голосов
/ 01 июня 2011

Это недопустимо в любом случае - вы не можете объявить переменную диапазона «в середине» соединения - внутренне предложение let переводится в оператор Select() с анонимным типом - но вы не можете использовать Select() либо в середине соединения, вы должны переместить его после объединения.

0 голосов
/ 01 июня 2011

Посмотрите на этот вопрос - я думаю, что он охватывает вещи:

Могу ли я использовать соединение с let in linq - c #

В основном вы можете использовать толькоПусть для запроса, а не для объединений.

Кажется, что работает следующее, но это не так приятно:

from a in new[] {
    new { Id = 1 },
    new { Id = 2 } }

join b in new[] {
    new { Id = 2 },
    new { Id = 3 } } on a.Id equals b.Id

select 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...