我想检查字典是否包含密钥,但是当我知道密钥在字典中时我总是返回false我做了一些研究并且覆盖了equals和hashchecks似乎做了我需要但我无法得到它工作可以有人帮助我请在这里检查密钥和字典对象的代码
public static ConcurrentDictionary<string, blueinfo> blueprizes = new ConcurrentDictionary<string, blueinfo>();
public static ConcurrentDictionary<string, yellowinfo> yellowprizes = new ConcurrentDictionary<string, yellowinfo>();
public static List<string[]> ExecuteStringCommand(SQLiteCommand command, int columncount)
{
List<string[]> values = new List<string[]>();
SQLiteDataReader reader = command.ExecuteReader();
while (reader.Read())
{
List<string> row = new List<string>();
row.Add("f2e135cdfb28407081bcca9a99a3148b");
if (Program.blueprizes.ContainsKey(row[0]))//line always returns false
row.Add(Program.blueprizes[row[0]].Name1);
if (Program.yellowprizes.ContainsKey(row[0]))//line always returns false
row.Add(Program.yellowprizes[row[0]].Name2);
else
row.Add("Prize not found");
values.Add(row.ToArray());
}
reader.Close();
return values;
}
class blueinfo
{
static List<string> row = new List<string>();
public blueinfo(string[] dbdata)
{
Name1 = dbdata[0];
Id1 = dbdata[1];
row.Add(dbdata[1]);
}
public string Name1 { get; set; }
public string Id1 { get; set; }
public static string[] dbdata1
{
get { return row.ToArray(); }
}
}
class yellowinfo
{
public yellowinfo(string[] dbdata)
{
Name2 = dbdata[0];
Id2 = dbdata[1];
}
public string Name2 { get; set; }
public string Id2 { get; set; }
}
这是添加项目的代码:
List<string[]> values = new List<string[]>();
line="prize 1=f2e135cdfb28407081bcca9a99a3148b"
values.Add(line.Split('='));
foreach (string[] row in values)
{
if (blue == true)
Program.blueprizes.TryAdd(row[1], new blueinfo(row));
else
Program.yellowprizes.TryAdd(row[1], new yellowinfo(row));
}
答案 0 :(得分:1)
代码中的许多错误/缺陷:
答案 1 :(得分:-1)
当您添加正在使用row[1]
的项目时,以及当您检查所使用的密钥时row[0]
。也许这就是问题?我不知道row[0]
和row[1]
是什么,但它们可能不完全相同。