我有一张门票清单。每张票都属于一个单一事件。我想从门票创建所有事件的列表。我可以获取此列表,但在列表中重复相同的事件(值)。如何确保仅将事件添加到列表中一次?
List<int> tickets = new List<int>();
List<Event> events = new List<Event>();
foreach (var s in tickets)
{
events.Add(_context.Event.Find(s));
}
答案 0 :(得分:8)
如果事件顺序不重要,您可以使用HashSet<Event>
代替List。这样,如果事件已存在于哈希集中,则不会再次添加事件。还要确保Event已覆盖Equals和GetHashCode方法,以比较事件的实际属性。
答案 1 :(得分:2)
您是否尝试过使用List<T>.Contains()
方法?
foreach (var s in tickets)
{
var event = _context.Event.Find(s);
if (!events.Contains(event))
{
events.Add(event);
}
}
答案 2 :(得分:2)
使用Distinct()
的完整Linq解决方案:
var events = tickets.Select(ticket => _context.Event.Find(ticket)).Distinct();