-1

嗨,我有这个 Bookings 对象

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);

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

4

3 回答 3

5

它是否在您要避免的列表中重复?如果是,那么您不应该使用列表,因为它允许重复。

更合适的候选者是Hashset,您必须GetHashCode()Booking中添加覆盖并根据日期时间段计算哈希,如此所述

然后在将您的Booking添加到HashSet之前,只需使用Contains方法验证该对象是否不存在

于 2013-08-10T02:08:24.630 回答
0

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

于 2013-08-10T02:56:45.313 回答
0

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

但是,如果您想查找重复项,则可以使用类似这样的 linq 查询:

bookedlist.Select( x=> new {x.date, x.timeslot}).Distinct();
于 2013-08-10T02:15:59.417 回答