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

本文关键字:对象 自定义 两个 比较 | 更新日期: 2023-09-27 18:27:02

嗨,我有这个预订对象

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

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

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

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

一个更容易缝合的候选者是Hashset,您必须在Booking中向GetHashCode()添加一个覆盖,并根据日期时隙计算哈希,如所述

然后,在将Booking添加到HashSet之前,只需使用Contains方法

验证对象是否已经存在

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

但是,如果你想找到重复的,那么你可以使用类似于以下的linq查询:

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

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