2010-03-18 7 views
1

Je ne peux pas tout à fait comprendre pourquoi cette déclaration LINQ ne fonctionne pas comme je voudrais attendre:LINQ to objet - Sélectionnez Distinct

Dim distinctSurchargesList = (From thisparent As Parent In ThisParentCollection _ 
            From thisChild As Child In thisparent.theseChildren _ 
            Select New With {.childId = thischild.Id}).Distinct() 

Je suppose que cela créerait une nouvelle collection de types anonymes, ce serait distinct. Au lieu de cela, il crée une collection de la taille de "ThisParentCollection" avec en double "MyAnonymousType" (doublons).

Quelqu'un peut-il me dire où je vais mal?

Merci

Répondre

4

Votre collection de types anonymes seront comparés pour l'égalité par la valeur de référence - non par la valeur du champ childId. Chaque type anonyme aura une référence d'objet différente, par conséquent ils sont tous distincts.

Sélectionnez simplement l'ID et ne le projetez pas dans un type anonyme.

Questions connexes