嗨,我有这个预订对象
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);
我正在循环上面的代码。我想避免基于日期和时间段的重复预订 我怎么能这样做?
答案 0 :(得分:5)
您试图避免的列表中是否重复?如果是,则不应使用列表,因为它允许重复。
更可靠的候选人是Hashset,您必须在预订中添加覆盖GetHashCode()
,并根据日期和时间段,如here
然后在将预订添加到 HashSet 之前,只需使用Contains方法验证该对象是否已存在
答案 1 :(得分:0)
如果您想避免在列表中添加重复值,那么首先不应该使用列表。 或者,您可以向类中添加某种Id,并将其用作字典中的键 要么 按照Simon的建议使用HashSet。
但是如果你想找到重复项,那么你可以使用这样的linq查询:
bookedlist.Select( x=> new {x.date, x.timeslot}).Distinct();
答案 2 :(得分:0)
我认为您应该更改为字典,因为它不允许重复键。这将允许您将预订对象添加到在添加时不会引发异常的键。