我正在寻找一种快速查找哈希表(字符串到字节数组)集合值是否包含给定值的方法,我无法使用给定的包含,因为它将比较数组对象而不是其值。
我不介意使用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个给定字节数组的函数,我觉得这不是正确的方法。没有辅助方法可能有一种更简单的方法来获得它。
答案 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}}。然后你可以使用普通的哈希表方法。