比较两个自定义对象以防止重复

时间:2013-08-10 01:54:26

标签: c# .net

嗨,我有这个预订对象

Booking abc = new Booking { date = DateTime.Today, timeslot= timeslot[1], venue = venue};
waiter xyz = new waiter { id = 1, name = "xyz" };
xyz.bookedList = new List<Booking>();
xyz.bookedList.Add(bookingxyz);

我正在循环上面的代码。我想避免基于日期和时间段的重复预订 我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

您试图避免的列表中是否重复?如果是,则不应使用列表,因为它允许重复。

更可靠的候选人是Hashset,您必须在预订中添加覆盖GetHashCode(),并根据日期和时间段,如here

所述

然后在将预订添加到 HashSet 之前,只需使用Contains方法验证该对象是否已存在

答案 1 :(得分:0)

如果您想避免在列表中添加重复值,那么首先不应该使用列表。 或者,您可以向类中添加某种Id,并将其用作字典中的键                     要么 按照Simon的建议使用HashSet

但是如果你想找到重复项,那么你可以使用这样的linq查询:

bookedlist.Select( x=> new {x.date, x.timeslot}).Distinct();

答案 2 :(得分:0)

我认为您应该更改为字典,因为它不允许重复键。这将允许您将预订对象添加到在添加时不会引发异常的键。