Nach der Aktualisierung von Visual Studio 2010 auf 2012 begann Code "ArgumentOutOfRangeException - Index war außerhalb des Bereichs. Muss nicht negativ sein und weniger als die Größe der Sammlung.Parametername: Index "auf Linq-Abfragen mit Joins.Linq to EF Join Würfe "Index war außerhalb des Bereichs" nach Upgrade von VS2010 auf VS2012
Das folgende einfache Beispiel in LINQPad gemacht (ein EF Datenmodell) gibt mir die 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();
}
das vorherige Beispiel Ändern beiden Seiten des einen anonymen Objekt zurückzugeben, enthält der Join nicht geben ArgumentOutOfRangeException und gibt die Ergebnisse wie erwartet:
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();
}
Ok, also aus irgendeinem Grunde ich beiden Seiten des Join zurückkehren musste, aber dann habe ich versucht, das folgende Beispiel einen Dummy-Wert verwendet stattdessen, die auch ohne pr ausgeführt 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();
}
das erste Beispiel nehmen und das Hinzufügen eines ToList() mit der ersten Abfrage macht es auch ohne Probleme ausführen:
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();
}
Wichtig: auf einer Arbeitsstation die erste Abfrage Der Versuch, ohne Das Upgrade von Visual Studio 2012 funktioniert einwandfrei!
Kann jemand dieses neue "Feature" bestätigen/erklären? :-)
Dieser Fehler wurde bei [Linq to EF Join throws "Index war außerhalb des Bereichs" nach dem Upgrade von VS2010 auf VS2012] abgelegt (https://connect.microsoft.com/VisualStudio/feedback/details/763986/linq- to-ef-join-throws-index-war-außerhalb-bereich-nach-upgrade-von-vs2010-zu-vs2012). Wenn Sie es reproduzieren können, dann sagen Sie Microsoft. Wenn Ihnen eine Lösung wichtig ist, "upvoten" Sie sie dort. –