Visual Studio 2010'dan 2012'ye yükseltme kodundan sonra "ArgumentOutOfOfRangeException - Dizin atılmaya başladı. Negatif olmayan ve daha az olmalıdır. Toplamanın büyüklüğü. Parametre adı: dizinLinq to EF Birleştirme, "Dizinin Aralık dışı olduğunu" VS2010'dan VS2012'ye yükselttikten sonra VS2012
basit (EF veri modeli kullanılarak) LINQPad yapılan örneğin bana ArgumentOutOfRangeException verir şunlardır: her iki tarafını içeren anonim nesneyi döndürmek için bir önceki örnekte değiştirme
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();
}
vermez birleştirme nedense katılmak iki tarafını dönmek zorunda,
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();
}
Tamam, ama sonra ben de bir pr olmadan idam yerine bir kukla değeri kullanarak aşağıdaki örneği, denenmiş: ArgumentOutOfRangeException ve verir sonuçları beklendiği gibi 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();
}
ilk örneği alma ve aynı zamanda bir sorun olmadan çalıştırmak yapan ilk sorgu için ToList(): eklenmesini olmayan bir iş istasyonu ilk sorgu çalışmak:
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();
}
Önemli Visual Studio 2012 yükseltmesi iyi çalışıyor!
Bu yeni "özellik" yi onaylayan/açıklayan var mı? :-)
Bu hata [Linq to EF Üyelik atar atıyor. 'Dizininin menzili aralık dışıdır' ', VS2010'dan VS2012'ye yükseltildikten sonra] (https://connect.microsoft.com/VisualStudio/feedback/details/763986/linq- to-ef-join-atar-index-çıkış aralık-sonrası yükseltme-den-VS2010-to-vs2012 idi). Yeniden üretebilirseniz, Microsoft'a bildirin. Bir düzeltme sizin için önemliyse, o zaman orada "yükselt". –