Ich musste eine dynamische Abfrage in der Kundendatenbank schreiben, um einige Felder eines Kunden zu erhalten.Leistung von IQueryable
folgenden ist der Code
[Route("api/getBasicCustList/{argType}/{argValue}")]
[HttpGet]
[Authorize]
public dynamic getCustomerDataUsername(String argType, String argValue)
{
IQueryable<CustomerDTO> query =
(from recordset in db.Customers
select new CustomerDTO
{
companyId = recordset.Company.Id,
contactNum = recordset.ContactNum,
username = recordset.UserName,
emailAddress = recordset.Email,
fullName = recordset.FullName,
accountNumber = recordset.RCustId
}
);
switch (argType)
{
case "username" :
query = query.Where(c => c.username.StartsWith(argValue));
break;
case "contactnum":
long mobNum = Int64.Parse(argValue);
query = query.Where(c => c.contactNum == mobNum);
break;
case "fullname":
query = query.Where(c => c.fullName.Contains(argValue));
break;
}
return new { data = query.ToList() };
}
das funktioniert gut und mein Ziel ist die Lösung.
meine Frage hier ist, wenn ich mein erster Teil der query
schreiben alle die Kundendaten zu erhalten und später gilt die in dem Zustand dynamisch die Ergebnisse im Speicher oder die komplette Abfrage erzeugt und an db ausgeführt gebracht werden In einem Schuss?
Da ich jetzt nur 500 Datensätze habe, kann ich keine Performance-Verzögerung finden, aber wenn ich das zur Produktion nehme, werde ich mit mindestens 200.000 bis 300.000 Datensätzen handeln.
Die Abfrage wird nicht ausgeführt, bis Sie diese "ToList" am Ende Ihrer Methode erreicht haben. – Kinetic
oh Gut. !! Können Sie oder jemand anderes einen Link von msdn oder einem Online-Artikel, der dies bestätigt, bereitstellen? Danke. –
Hier gehen Sie [Abfrageausführung] (https://msdn.microsoft.com/en-us/library/bb738633 (v = vs.100) .aspx). –