comment vérifier si la valeur de la propriété de chaque membre de la liste est la même
Donc dire que j'ai un Étudiant de classe avec une propriété, int Age
. Maintenant, si j'ai List<Student> students
, comment puis-je vérifier si l'âge de tous les élèves dans la liste est l'égalité?
OriginalL'auteur user1151923 | 2013-08-28
Vous devez vous connecter pour publier un commentaire.
Vous pouvez vérifier en utilisant
All
méthode, sans doute de votre liste et demandez aux élèves:First
d'abord, bien queVotre première mise en œuvre n'était pas grave parce que l'énumération jusqu'à ce que le premier élément n'est pas cher.
vous avez raison, édité
c'est la même chose, je pense
Yep, semble comme ils l'ont à la fois le court-circuit (Tout vs Tous) et Tout est plus facile à lire (dans ce cas)
OriginalL'auteur cuongle
Si vous voulez faire cela en une seule requête, et non pas de deux (ce qui est généralement une mauvaise pratique),
le fera pour vous.
Ce sera aussi le retour de vrai dans le cas trivial où vous n'avez pas les étudiants à tous, plutôt que de jeter une exception. (Vous pourriez faire
== 1
plutôt que< 2
renvoie false dans le cas trivial à la place.)Take(2)
entre lesDistinct()
et laCount()
, ce qui permettrait à un niveau de court-circuit - cependant, il aurait la charge d'un extra itérateur - donc, si c'est une bonne chose dépend d'un grand nombre de différents âges serait un scénario probableBon point, je suis assez déçu de moi-même à l'aide d'un
Count
quand j'ai vraiment ne veulent qu'une "0, 1 or 2
", d'habitude je suis assez bons pour repérer ce genre de choses.Cette wil itérer tous les âges, même si les deux premiers sont différents.
Yup, Marc l'a déjà souligné, et une solution, et une mise en garde à pourquoi vous ne pourriez pas vouloir l'utilisation de la solution, raison pour laquelle j'ai quitté la solution dans son commentaire, plutôt que de le copier dans ma réponse. J'avais toujours prendre ce plus de deux requêtes de la solution.
OriginalL'auteur Rawling
Si les élèves peuvent avoir 0 d'éléments que vous pouvez faire ceci:
... Très bon point, maintenant ne pas me sentir stupide 🙂
OriginalL'auteur Alex Siepman
Juste une réponse aléatoire - pas sûr que je ferais de cette façon dans la réalité, mais ce sera brutalement efficace:
List<T>
ne offre de canard tapé les itérateursCode:
Je suis de la vieille école comme ça ;p
OriginalL'auteur Marc Gravell
Si vous ne pouvez pas utiliser linq, vous pouvez toujours en boucle tous les élèves:
OriginalL'auteur SysDragon
Si vous n'avez qu'à vérifier que cette fois, l'marqué answere est la meilleure solution. Pour l'utiliser plusieurs fois dans votre code, il suffit d'écrire un statique extension de vérifier l'égalité de la propriété:
Si vous souhaitez utiliser la valeur de la propriété plus tard, permet de renvoyer cette valeur:
Mais à l'aide de ce code, vous devez vérifier la météo de l'returnd valeur est
null
oudefault(TKey)
concernant le type de propriété.OriginalL'auteur black.rook