ich einige sehr einfache Testcode läuft auf die Auswirkungen der Konstanten in LINQ-Abfragen zu suchen und ich habe Probleme, eine Überlastung Ortung ...Lambda Überlastung Skip/Take Fehlende
This MSDN article speziell eine Lambda-Überlastung erwähnt für skip/take, aber ich kann es nicht finden.
Aus Abschnitt 4.2 von Performance Considerations for Entity Framework 4, 5, and 6:
"In particular pay attention to the use of Skip and Take when doing paging. In EF6 these methods have a lambda overload that effectively makes the cached query plan reusable because EF can capture variables passed to these methods and translate them to SQLparameters."
Sie folgen, dass mit diesem Codebeispiel:
var customers = context.Customers.OrderBy(c => c.LastName);
for (var i = 0; i < count; ++i)
{
var currentCustomer = customers.Skip(() => i).FirstOrDefault();
ProcessCustomer(currentCustomer);
}
Mein Testcode:
for(int i = 0; i<100; i++)
{
var result = dc.Products
//.Select(p => p.Name)
.OrderBy(p => p.Name)
.Skip(() => i)
.ToList();
}
Error: Cannot convert lambda expression to type 'int' because it is not a delegate type
Bin ich Fahren Lesen, oder ist es Ein Include fehlt irgendwo mit der überladenen Erweiterungsmethode? Ich bin auf EF 6.1.1.
Fantastisch - Danke! Meine Google-Fähigkeiten versagten mir dabei und ich fing an, ernsthaft meine Lesefähigkeiten abzuschätzen. Will Antwort in ein paar annehmen - nur auf den Timer warten :) –