C#Hashtable包含字节数组值

时间:2014-03-30 13:09:28

标签: c# hashtable contains

我正在寻找一种快速查找哈希表(字符串到字节数组)集合值是否包含给定值的方法,我无法使用给定的包含,因为它将比较数组对象而不是其值。

我不介意使用linq / extension / implement包含只要

我试过了:

byte[] givenArr = new[]{1,2,3,4}; //(a given arr)
bool contains=false;
Hashtable table;
foreach(var val in table.values)
  if (CompareBytesFunction((byte[])val,givenArr))
      contains=true;

其中比较字节是比较2个给定字节数组的函数,我觉得这不是正确的方法。没有辅助方法可能有一种更简单的方法来获得它。

2 个答案:

答案 0 :(得分:2)

尽管它几乎违背了应该通过密钥搜索的Hashtables概念,但您可以使用这样的代码:

//suppose this is the byte array you're looking for:
byte[] b = new byte[] { 1, 3, 5 };

bool exists = myHashtable.Values.OfType<byte[]>().
    ToList().Exists(c => c.SequenceEqual(b));

答案 1 :(得分:0)

您应该实现可以散列并比较IEqualityComparer的{​​{1}}。然后你可以使用普通的哈希表方法。