Linq to EF Join выдает «Индекс был вне диапазона» после обновления с VS2010 до VS2012

После обновления с Visual Studio 2010 до 2012 код начал бросатьArgumentOutOfRangeException - Индекс был вне диапазона. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: index " на запросы Linq с использованием Joins.

Следующий простой пример, сделанный в LINQPad (с использованием модели данных EF), дает мне исключение ArgumentOutOfRangeException:

void Main()
{
    var iq1 = Customers.Select(ap => ap.ID);
    var iq2 = iq1.Join(Customers.Select(ap => ap.ID),
                    a => a,
                    b => b,
                    (a, b) => new { a });

    iq2.Dump(); 
}

Изменение предыдущего примера для возврата анонимного объекта, содержащего обе стороны объединения, не делаетt дает ArgumentOutOfRangeException и дает ожидаемые результаты:

void Main()
{
    var iq1 = ActionPlans.Select(ap => ap.ID);
    var iq2 = iq1.Join(ActionPlans.Select(ap => ap.ID),
                    a => a,
                    b => b,
                    (a, b) => new { a, b });

    iq2.Dump(); 
}

Итак, по какой-то причине мне пришлось вернуть обе стороны объединения, но затем я попробовал следующий пример, используя вместо этого фиктивное значение, которое также выполнялось без проблем:

void Main()
{
    var iq1 = ActionPlans.Select(ap => ap.ID);
    var iq2 = iq1.Join(ActionPlans.Select(ap => ap.ID),
                    a => a,
                    b => b,
                    (a, b) => new { a, x = 1 });

    iq2.Dump(); 
} 

Взяв первый пример и добавив ToList () к первому запросу, он также выполняется без проблем:

void Main()
{
    var iq1 = ActionPlans.Select(ap => ap.ID).ToList();
    var iq2 = iq1.Join(ActionPlans.Select(ap => ap.ID),
                    a => a,
                    b => b,
                    (a, b) => new { a });

    iq2.Dump(); 
}

Важный: Попытка первого запроса на рабочей станции без обновления Visual Studio 2012 работает отлично!

Может ли кто-нибудь подтвердить / объяснить это новое?особенность"? :-)

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

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