C# 哈希表包含字节数组值

本文关键字:数组 字节数 字节 哈希表 包含 | 更新日期: 2023-09-27 17:55:32

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

我不介意使用LINQ/扩展/实现包含,只要它很短

我试过:

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 个给定字节数组的函数,我觉得这不是正确的方法。 可能有一种更简单的方法可以在没有帮助程序方法的情况下获得它。

C# 哈希表包含字节数组值

尽管它几乎违背了应该按键搜索的哈希表的概念,但您可以使用以下代码:

//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));

您可能应该实现一个可以散列和比较byte[]IEqualityComparer。然后,您可以使用普通的哈希表方法。