Visual Studio 2010에서 2012 코드로 업그레이드 한 후 "ArgumentOutOfRangeException - 인덱스가 범위를 벗어났습니다. 컬렉션의 크기. 매개 변수 이름 : 인덱스 "조인을 사용하여 Linq 쿼리에.Linq to EF Join VS2010에서 VS2012로 업그레이드 한 후 "인덱스가 범위를 벗어났습니다."
간단한 (AN EF 데이터 모델을 사용) LINQPad에서 만든 예를 나에게 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();
}
을하여 제공하지 않습니다 가입 어떤 이유로 내가 조인의 양쪽을 반환했다, 그래서
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();
}
좋아,하지만 나는 또한 홍보없이 실행 대신에 더미 값을 사용하여 다음과 같은 예를 들어, 시도 : ArgumentOutOfRangeException 및 제공 결과는 예상대로 oblem :
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 업그레이드가 잘 작동합니다!
누구든지이 새로운 "기능"을 확인/설명 할 수 있습니까? :-)
이 버그는 [Linq가 EF Join에 "VS2010에서 VS2012로 업그레이드 한 후"인덱스가 범위를 벗어났습니다.]에서 제기되었습니다 (https://connect.microsoft.com/VisualStudio/feedback/details/763986/linq- to-ef-join-throws-index-of-out-of-range-after-of-upgrade-from-vs2010-to-vs2012)를 지원합니다. 재현 할 수 있으면 Microsoft에 알려주십시오. 수정본이 중요한 경우, "수정"하십시오. –