不要向列表添加相同的值

时间:2013-04-22 16:13:03

标签: c#

我有一张门票清单。每张票都属于一个单一事件。我想从门票创建所有事件的列表。我可以获取此列表,但在列表中重复相同的事件(值)。如何确保仅将事件添加到列表中一次?

 List<int> tickets = new List<int>();

 List<Event> events = new List<Event>();

 foreach (var s in tickets)
 {
     events.Add(_context.Event.Find(s));
 }

3 个答案:

答案 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();