Ich habe derzeit einen Code-Schnipsel, der auf jeden Benutzer in Active Directory
reagieren wird und als ich es betrachtete, begann ich mich zu fragen, ob es besser ist, den Methodenaufruf vor der foreach
-Schleife zu erledigen oder ob es in Ordnung ist es ist. Ich habe getestet mit principalSearcher.FindAll())
sowohl innerhalb als auch außerhalb der Schleife und kann keinen Unterschied bemerken, aber dann gibt es nicht wirklich einen großen Datensatz zu sehen, so dass ich mich wundere über diese mehr aus einer Best-Practice-Situation.Sollte eine Methode aufrufen, Daten vor einer foreach-Schleife zu erhalten?
foreach (var user in principalSearcher.FindAll())
{
var employeeID = db.Employees
.Where(employee => employee.ADUserName == user.SamAccountName && employee.EndDate == null)
.Select(employee => employee.ID)
.FirstOrDefault();
if (employeeID > 0)
{
var updatedEmployee = db.Employees.Find(employeeID);
updatedEmployee.EndDate = DateTime.Today;
db.SaveChanges();
}
}
Hinweis: principalSearcher
vom Typ System.DirectoryServices.AccountManagement.PrincipalSearcher
Es spielt keine Rolle in Bezug auf die Leistung - der einzige Unterschied besteht darin, ob die Ergebnisse außerhalb des Bereichs "foreach" verfügbar sind oder nicht. Das Clal wird nur einmal gemacht. –
Warum denkst du, dass es Unterschiede geben kann? – Evk
@Evk Weil ich nicht weiß, wie eine foreach-Schleife kompiliert wird und ob es am Ende mehrere Aufrufe von AD oder nicht tun würde. Ich dachte, es wäre nicht, aber ich dachte, es wäre schön, 100% zu wissen. – Matthew