Ich habe Probleme beim Löschen der doppelten Referenzen in meiner Liste.Löschen von doppelten Referenzen in Liste C#
Ich habe diese Liste
List<SaveMongo> toReturn
mit meiner Klasse SaveMongo, die wie dieser
public class SaveMongo
{
public ObjectId _id { get; set; }
public DateTime date { get; set; }
public Guid ClientId { get; set; }
public List<TypeOfSave> ListType = new List<TypeOfSave>();
public List<ObjectId> ListObjSave = new List<ObjectId>();
public SaveMongo()
{ }
}
Immer, wenn ich sieht ein Element meiner Liste hinzufügen möchte ich den folgenden Code
public static fctName(BsonDocument doc)
{
toReturn.Add(AddingSaveMongo(doc.GetValue("_id")));
}
public static SaveMongo AddingSaveMongo(BsonValue ObjValue)
{
foreach (SaveMongo doc in SpeCollection.FindAll())
{
foreach (var id in doc.ListObjSave)
{
if (id == ObjValue)
return (doc);
}
}
return (null);
}
Allerdings erhalte ich manchmal doppelte Referenzen. Ich habe versucht, diese
toReturn = toReturn.Distinct().ToList();
zu verwenden, um sie zu löschen. Ohne Erfolg.
Ich habe auch versucht, ohne Erfolg dieses
if (!toReturn.Contains(AddingSaveMongo(doc.GetValue("_id"))))
toReturn.Add(AddingSaveMongo(doc.GetValue("_id")));
noch zu tun. Aber immer, wenn ich die Referenzen in meiner Liste drucken erhalte ich jenes Ergebnis
Was ich hier fehle, so dass ich noch Duplikate Referenzen in meiner Liste habe?
Alternativ, wenn Sie‘ Wenn Sie .netfw> 3.5 verwenden, können Sie ein HashSet verwenden. Dann müssen Sie sich keine Gedanken über Duplikate machen. – cup
'HashSet' muss immer noch wissen, wie diese Objekte zu vergleichen sind. –