Tôi gặp sự cố khi xóa các tham chiếu trùng lặp trong danh sách của mình.Xóa các tham chiếu trùng lặp trong danh sách C#
Tôi có danh sách
List<SaveMongo> toReturn
này với lớp học của tôi SaveMongo trông như thế này
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()
{ }
}
Bất cứ khi nào tôi muốn thêm một yếu tố vào danh sách của tôi, tôi sử dụng đoạn mã sau
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);
}
Tuy nhiên, đôi khi tôi nhận được các tham chiếu trùng lặp. Tôi đã thử sử dụng
toReturn = toReturn.Distinct().ToList();
để xóa chúng. Không thành công.
Tôi cũng đã cố gắng để làm điều này
if (!toReturn.Contains(AddingSaveMongo(doc.GetValue("_id"))))
toReturn.Add(AddingSaveMongo(doc.GetValue("_id")));
Tuy không thành công. Nhưng bất cứ khi nào tôi in các tài liệu tham khảo trong danh sách của tôi, tôi có được những kết quả
Những gì tôi đang mất tích ở đây vì vậy mà tôi vẫn có bản sao tài liệu tham khảo trong Danh sách của tôi?
Ngoài ra, nếu bạn' tái sử dụng .netfw> 3.5, bạn có thể sử dụng một HashSet. Sau đó, bạn sẽ không phải lo lắng về các bản sao. – cup
'HashSet' sẽ vẫn cần biết cách so sánh các đối tượng đó. –