Meilleur auteur de réponses
Supprimer les doublons d'une liste

Question
-
Bonjour,
J'ai une liste d'objet déclarée dans un classe qui implémente IEQuatable et pour laquelle j'ai implanté les procédures Equals et GetHashCode.
Pour supprimer les doublons j'ai essayé le code suivant:
var liste = Maliste.GroupBy(c => c.City + c.CityGeoCode + c.County + c.Region + c.Country).Select(c => c.First();
Mais cela ne marche pas , j'ai le même nombre d'enregistrements.
Merci pour votre aide.
Bernard
Bernard Bouree
Réponses
-
Bonjour Bernard,
Voici une solution :
/// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { List<ToponymesGeo> LstToponymesGeo = new List<ToponymesGeo>(); public MainWindow() { InitializeComponent(); var liste = ListeToponymesGeoDB().ToLookup(p => p.City + p.CityGeoCode + p.Country + p.County + p.Region).Select(c=>c.First()); foreach (ToponymesGeo item in liste) { LstToponymesGeo.Add(item); } } private List<ToponymesGeo> ListeToponymesGeoDB() { List<ToponymesGeo> ToponymesGeo = new List<ToponymesGeo> { new ToponymesGeo { City="Paris", CityGeoCode="Code 1", Country="France", County="County", Region="Region" }, new ToponymesGeo { City = "Lyon", CityGeoCode = "Code 2", Country = "France", County = "County", Region = "Region 2" }, new ToponymesGeo { City = "Paris", CityGeoCode = "Code 1", Country = "France", County = "County", Region = "Region" }, new ToponymesGeo { City = "Paris", CityGeoCode = "Code 3", Country = "France", County = "County 3", Region = "Region" } }; return ToponymesGeo; } }
J'espère que j'ai bien répondu à votre question.
Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post
Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi
Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;
- Modifié Nourdine MHOUMADI mardi 29 août 2017 09:30
- Marqué comme réponse BernardBouree mardi 29 août 2017 10:01
Toutes les réponses
-
-
Bonjour
IEnumerable<ToponymeGeoDb> liste = ToponymeGeoDb.ListeToponymesGeoDB.Distinct();
En lisant la doc sur le web j'ai mis en place les choses suivantes:
Implanter IEQuatable dans ma class
Implanter Equals() et GetHashCode()
Sans succès.
J'ai placé un arrêt au début de mes deux fonctions mais en debugant le programme semble jamais passé par là ?
public bool Equals(ToponymeGeoDb other)
{
if (ReferenceEquals(null, other)) return false;
if (ReferenceEquals(this, other)) return true;
return City.Equals(other.City) && CityGeoCode.Equals(other.CityGeoCode);
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((ToponymeGeoDb)obj);
}Bernard Bouree
-
Bonjour Bernard,
Voici une solution :
/// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { List<ToponymesGeo> LstToponymesGeo = new List<ToponymesGeo>(); public MainWindow() { InitializeComponent(); var liste = ListeToponymesGeoDB().ToLookup(p => p.City + p.CityGeoCode + p.Country + p.County + p.Region).Select(c=>c.First()); foreach (ToponymesGeo item in liste) { LstToponymesGeo.Add(item); } } private List<ToponymesGeo> ListeToponymesGeoDB() { List<ToponymesGeo> ToponymesGeo = new List<ToponymesGeo> { new ToponymesGeo { City="Paris", CityGeoCode="Code 1", Country="France", County="County", Region="Region" }, new ToponymesGeo { City = "Lyon", CityGeoCode = "Code 2", Country = "France", County = "County", Region = "Region 2" }, new ToponymesGeo { City = "Paris", CityGeoCode = "Code 1", Country = "France", County = "County", Region = "Region" }, new ToponymesGeo { City = "Paris", CityGeoCode = "Code 3", Country = "France", County = "County 3", Region = "Region" } }; return ToponymesGeo; } }
J'espère que j'ai bien répondu à votre question.
Si c'est le cas, n'hésitez pas à mettre ma réponse en réponse à votre post
Vous pouvez me suivre sur Twitter : https://twitter.com/NordineMhoumadi
Download my NEW FREE application MCP PREPARATION in the Windows 10 Store for preparing your Microsoft Certification or test your skills in Microsoft Technologies;
- Modifié Nourdine MHOUMADI mardi 29 août 2017 09:30
- Marqué comme réponse BernardBouree mardi 29 août 2017 10:01
-