Maison >développement back-end >C++ >Comment puis-je utiliser LINQ pour obtenir des objets distincts en fonction de propriétés spécifiques?

Comment puis-je utiliser LINQ pour obtenir des objets distincts en fonction de propriétés spécifiques?

Barbara Streisand
Barbara Streisandoriginal
2025-02-02 08:56:11248parcourir

How Can I Use LINQ to Get Distinct Objects Based on Specific Properties?

Linq Distinct () avec des propriétés d'objet complexes

La méthode distincte () de Linq fournit un moyen efficace de supprimer les éléments en double d'une collection. Cependant, trouver des éléments distincts basés sur une ou plusieurs propriétés d'objet nécessite une approche différente.

Les propriétés de regroupement pour des résultats distincts

pour obtenir des résultats distincts basés sur des propriétés spécifiques, utilisez Les méthodes groupBy () et First () pour créer des groupes et sélectionner un représentant de chaque groupe. Par exemple:

List<Person> distinctPeople = allPeople
  .GroupBy(p => p.PersonId)
  .Select(g => g.First())
  .ToList();

Dans ce scénario, les requêtes regroupent toutes les personnes par leur propriété PersonID et sélectionnent la première personne de chaque groupe. Le résultat est une liste distincte de personnes en fonction de leur personID.

Groupement de plusieurs propriétés

Si des résultats distincts sont nécessaires en fonction de plusieurs propriétés, modifiez la requête comme suit:

List<Person> distinctPeople = allPeople
  .GroupBy(p => new { p.PersonId, p.FavoriteColor })
  .Select(g => g.First())
  .ToList();

Cette requête regroupe les gens par leurs propriétés personnelles et favorites, assurant une liste distincte basée sur les deux critères.

Considérations

Une question de requête Les fournisseurs peuvent ne pas garantir que chaque groupe a au moins un élément. Dans de tels cas, envisagez d'utiliser FirstOrdeFault () au lieu de First (). De plus, cette technique peut ne pas convenir à une utilisation avec les versions de base du cadre d'entité avant 6. Consultez des approches alternatives à https://stackoverflow.com/a/66529949/8155 pour la compatibilité dans de tels environnements.

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:
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