In meiner Datenbank habe ich viele Kunden und ich sende jeden Kunden Bestellungen. Jetzt muss ich alle Kunden durchlaufen und finde die Kunden, die mehr als einen Zielpreis haben. Ich verwende dieses Stück Code:Schnellste Methode Berechnung der Summe der Kundenaufträge mit Linq
List<int> IDz = new List<int>();
foreach (var customer in db.tblCustomers)
{
total = 0;
foreach (var order in db.tblCustomerOrders.Where(x => x.CustomerID == customer.CustomerID))
total += Convert.ToDouble(order.Amount);
if (total >= Convert.ToDouble(txtAmount.Text))
IDz.Add(customer.CustomerID);
}
Dieser Code dauert etwa 15 Sekunden für etwa 1500 Kunden. Wie kann ich schneller machen? irgendein Vorschlag?
Wahrscheinlich überprüfen Sie Ihre db zu bekommen und einen Index erstellen für CustomerID in Ihren Auftragstabellen. – mybirthname
Linq macht es nicht "besser" oder sogar "schneller" wie Sie wollen, es ist nur syntaktischer Zucker. Um die Leistung zu erhöhen, sollten Sie zuerst einen Profiler verwenden, um zu überprüfen, ob Ihre Performance-Probleme wirklich mit diesem Code zusammenhängen und * ob * sie die Datenbank so konfigurieren möchten, wie es von meinem Geburtsnamen vorgeschlagen wird. Das Problem bei LINQ ist, dass es genau das selbe intern erledigt, wie Sie es bereits tun - das Schleifen Ihrer Zeilen, die von Ihrer Datenbank zurückgegeben werden. – HimBromBeere
Speichern numerischer Werte als Strings ... Ich denke, Code zahlt dich nur für solch ein interessantes Design zurück :) - [stringly typed code] (https://blog.codinghorror.com/new-programming-jargon/) ... Bitte klären Sie, warum Sie dies tun müssen (insbesondere beim Vergleich von "Summe") und warum Sie nicht alle Operationen in DB durchführen. –