Hier ist ein Code-SnippetWie Re-Order Auswertung dieses Linq Szenario
IEnumerable<Car> GetCars()
{
foreach(var request in RequestQueue())
{
RemoveFromQueue(request);
yield return MakeCar(request);//Expensive
}
}
// Anwendungsszenario 1: Kein Problem
foreach(Car c in GetCars())
{
//Do stuff
}
// Anwendungsszenario 2: Problem Ich habe alle Autos gebaut, aber nur 1.
foreach(Car c in GetCars().Where(p=>p.Request.Id==10000))
{
//Do stuff
}
Ist es möglich, die Where-Klausel zu evaluieren, bevor ich ein Auto baue? Wie?
Offensichtlich kann die where-Klausel basierend auf der Client-Nutzung variieren.
Motivation: Wenn Sie Linq zu SQL ausführen, wird .Take (10) in Top (10) umgewandelt und die Abfrage wird auf dem Server ausgeführt. Ich möchte so etwas erreichen.
eine Motivation zur Abfrage hinzugefügt, sehen, ob das hilft –
Welcher Typ ist RequestQueue() ist es IQueryable, IEnumerable oder ... – bytebender
ist IEnumerable –