J'essaie d'apprendre Linq et j'ai besoin d'aide avec une méthode qui recherche une liste dans une liste, trouve une correspondance, et le supprime. Par exemple, imaginez que j'ai une classe appelée Student
:Linq lambda pour rechercher une liste dans une liste, trouver une correspondance, puis la supprimer de la liste
public class Student
{
string FirstName;
string LastName;
}
Puis imaginez que j'ai une autre classe appelée Classroom
, qui a une List<Student>
:
public class Classroom
{
List<Student> Students;
}
Et enfin, j'ai une classe, appelée School
, qui a une liste de Classrooms
:
public class School
{
List<Classroom> Classrooms;
}
, je dois ensuite une méthode qui prend dans un Student
objet, vérifie si l'étudiant est à l'école et les supprime s'ils le sont. S'ils sont à l'école, la méthode devrait les supprimer et retourner vrai. Si elles ne sont pas à l'école, la méthode devrait retourner false et ne rien faire. Voici un exemple en utilisant des boucles foreach, que je veux me débarrasser de:
public bool RemoveStudentFromSchool(Student student)
{
foreach (Classroom c in Classrooms)
{
foreach (Student s in c.Students)
{
if ((student.FirstName == s.FirstName) && (student.LastName == s.LastName))
{
s.Remove(student);
return true;
}
}
}
return false;
}
devrait plutôt être: Tous (s = > (student.FirstName == s.FirstName && student.LastName = = s.LastName)) – ub1k
@ ub1k: Vous ne savez pas exactement ce que vous voulez dire - pouvez-vous élaborer? – ChrisWue
@ ub1k chris mentionne que la première approche est avec IEquatable ce qui signifierait qu'il aurait dû faire sa propre implémentation de equals et gethashcode de toute façon – Manatherin