Groupe Linq sur plusieurs champs - VB.NET, Anonyme, Clé
Je suis perplexe. J'ai besoin d'aide. J'ai un DTO objet avec des doublons du patient les données d'adresse. J'ai besoin d'obtenir uniquement les adresses uniques.
Dim PatientAddressDto = New List(Of PatientAddress)
{Populate PatientAddressDto with lots of duplicate data}
PatientAddressDto = (From d In PatientAddressDto
Group d By PatientAddressDtoGrouped = New PatientAddress With {
.Address1 = d.Address1,
.Address2 = d.Address2,
.City = d.City,
.State = d.State,
.Zip = d.Zip
}
Into Group
Select New PatientAddress With {
.Address1 = PatientAddressDtoGrouped.Address1,
.Address2 = PatientAddressDtoGrouped.Address2,
.City = PatientAddressDtoGrouped.City,
.State = PatientAddressDtoGrouped.State,
.Zip = PatientAddressDtoGrouped.Zip
}).ToList()
J'ai essayé les suivantes avec pas de chance:
PatientAddressDto = (From d In PatientAddressDto
Select New PatientAddress With {
.Address1 = d.Address1,
.Address2 = d.Address2,
.City = d.City,
.State = d.State,
.Zip = d.Zip
}).Distinct
et aussi
PatientAddressDto = PatientAddressDto.GroupBy(Function(p) New PatientAddress With {
.Address1 = p.Address1,
.Address2 = p.Address2,
.City = p.City,
.State = p.State,
.Zip = p.Zip
})
source d'informationauteur wavedrop | 2012-04-03
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un anonyme de type et de faire usage de la
mot clé pour l'égalité à se comporter de la façon dont vous vous attendez (pas nécessaire pour le C#).
Changer votre groupement en précisant le
Key
préfixe et retirer lePatientAddress
utilisation :J'ai trouvé le code suivant à un travail qui accomplit essentiellement le regroupement que j'ai le désir et le remplissage de l'objet nouveau type de PatientAddress donc d'éliminer l'utilisation des objets anonymes et le mot Clé.
Peut-être quelqu'un peut l'expliquer, à l'instant, je ne peux pas. Avoir une belle journée.
C'est probablement parce que
PatientAddress
ne remplace pasGetHashCode
etEquals
.Une alternative est pour nous un anonyme de type pour le groupement. Essayez d'écrire: