我有字典,其中值是重复的。如何防止字典中的重复?以下是我的代码
private class GcellGtrx
{
public Gcell Gcell { get; set; }
public Gtrx Gtrx { get; set; }
}
private readonly Dictionary<int, GcellGtrx> _dictionary = new Dictionary<int, GcellGtrx>();
_dictionary.Add(gcell.CellId, gcellGtrx);
答案 0 :(得分:7)
要检查重复键,您可以使用:
dictionary.ContainsKey(gcell.CellId);
并检查重复值,您可以使用:
dictionary.ContainsValue(gcellGtrx);
答案 1 :(得分:2)
如果您可以接受扫描整个字典中可能重复的开销,那么此代码将检查字典中是否存在现有值:
dictionary.ContainsValue(gcellGtrx);
如果你不能接受,你应该:
然后,它将与您在普通字典上进行类似的查找,以查看该值是否已存在。
即。你可以这样做:
private readonly Dictionary<int, GcellGtrx> _dictionary = new Dictionary<int, GcellGtrx>();
private readonly Dictionary<GcellGtrx, int> _reverseDictionary = new Dictionary<GcellGtrx, int>();
if (!_reverseDictionary.ContainsKey(gcellGtrx))
{
_dictionary.Add(gcell.CellId, gcellGtrx);
_reverseDictionary.Add(gcellGtrx, gcell.CellId);
}
答案 2 :(得分:1)
您可以在添加到词典之前检查重复值:
if (!_dictionary.ContainsValue(gcellGtrx))
_dictionary.Add(gcell.CellId, gcellGtrx);
<强>更新强>
我感谢@Lasse V. Karlsen编辑了我的回答,他提醒我,我误解了这个问题。
答案 3 :(得分:1)
或者
(A*)*
这将在字典中包含最后一个gcellGtrx。
OR
_dictionary[gcell.CellId] = gcellGtrx;
这会将第一个gcellGtrx保留在字典中。