Für meine Klassenaufgabe muss ich eine alte Liste von Schülern mit einer neuen Liste vergleichen und die neuen Schüler hinzufügen, entfernte Schüler und Schüler in separate Listen ändern Ich benutze verschachtelte foreach-Schleifen und nicht LINQ, aber mein Problem besteht darin, dass man aus den Schleifen ausbricht, sobald die alte Schülerliste mit einem Eintrag in den neuen Schülern übereinstimmt und zum nächsten Schüler in der alten Liste übergeht.C# - Vergleich zweier Listen von Objekten für Änderungen mit foreach
Mein Code läuft jetzt durch den verschachtelten foreach, vergleicht die Einträge mit dem ersten Eintrag in der alten Liste und kommt als Ergebnis ohne ID-Übereinstimmungen daher in die entfernte Liste und beendet die Schleifen, ohne weiterzugehen der nächste Schüler in der alten Liste.
public static void CompareStudents(List<Student> oldList, List<Student> newList)
{
foreach (Student o in oldList)
{
foreach (Student n in newList)
{
if (FindStudent(o.ID, n.ID))
{
if (CheckChanges(o, n))
{
changed.Add(n);
break;
}
}
else
{
removed.Add(o);
break;
}
}
}
}
private static bool FindStudent(string oldID, string newID)
{
if (newID.Equals(oldID))
{
return true;
}
else
{
return false;
}
}
public static bool CheckChanges(Student oldStu, Student newStu)
{
if (oldStu.FirstName.Equals(newStu.FirstName) &&
oldStu.LastName.Equals(newStu.LastName) &&
oldStu.StudentYear.Equals(newStu.StudentYear) &&
oldStu.StudentRank.Equals(newStu.StudentRank))
{
return false;
}
else
{
return true;
}
}
Ahhh, was ist Ihre Frage? Willst du nur, dass wir deine Hausaufgaben für dich erledigen? –
http://stackoverflow.com/questions/5636438/difference-between-two-lists – Fredrik
Wo wird die entfernte Liste deklariert? Ihre Anforderungen sind nicht klar. – CRice