Maison > développement back-end > C++ > Comment puis-je utiliser la méthode distincte () de Linq sur des propriétés d'objets spécifiques?

Comment puis-je utiliser la méthode distincte () de Linq sur des propriétés d'objets spécifiques?

Barbara Streisand
Libérer: 2025-02-02 09:16:08
original
318 Les gens l'ont consulté

How Can I Use LINQ's Distinct() Method on Specific Object Properties?

Utilisation de Linq's Distinct () pour les propriétés d'objets uniques

La méthode

Linq Distinct() supprime efficacement les éléments en double d'une séquence. Cependant, vous devez souvent identifier l'unicité basée sur des propriétés d'objets spécifiques, pas l'objet entier.

Exemple: Persons uniques basés sur ID

Disons que vous avez une classe Person avec une propriété Id. Pour obtenir une liste de personnes uniques en fonction de leurs identifiants, regrouper la liste par le Id et sélectionnez la première personne dans chaque groupe:

List<Person> distinctPeople = allPeople
    .GroupBy(p => p.Id)
    .Select(g => g.First())
    .ToList();
Copier après la connexion

Gestion de plusieurs propriétés

Pour assurer l'unicité sur plusieurs propriétés (par exemple, Id et FavoriteColor), créez un type anonyme comme clé de regroupement:

List<Person> distinctPeople = allPeople
    .GroupBy(p => new { p.Id, p.FavoriteColor })
    .Select(g => g.First())
    .ToList();
Copier après la connexion

Remarque importante: Compatibilité des fournisseurs de requête

Certains fournisseurs de requêtes (comme les anciennes versions de l'entité Framework Core) peuvent lancer des exceptions si un groupe est vide. Dans de tels cas, remplacez First() par FirstOrDefault(). Si FirstOrDefault() renvoie null, vous devrez gérer cette possibilité dans votre code.

EF Core (pré-version 6) Solution

Pour les versions de noyau EF avant 6 ans, une approche plus robuste est nécessaire pour gérer les groupes vides potentiels. Reportez-vous à cette réponse de débordement de pile pour une solution détaillée: https://www.php.cn/link/7dd21654ce1c39ec7632d219e8e71f11 Cela fournit une méthode qui gère gracieusement les cas où une combinaison de propriétés n'a pas d'objets correspondants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal