2

我如何使用Contains(),但数组是比较对象?这里的区别是我需要检查数组内容的相等性,而不是内存地址。我怎样才能做到这一点?

var array = List<byte[]>();
var searchFor = new byte[23]; //has some value in it
array.Contains(searchFor); //Doesn't work properly
4

2 回答 2

3
bool containsArray = array.Any(a => a.SequenceEqual(searchFor));

如果排序对平等无关紧要:

var orderedSearchFor = searchFor.OrderBy(x => x);
bool containsArray = 
      array.Any(a => a.OrderBy(x => x).SequenceEqual(orderedSearchFor));
于 2013-10-25T23:45:11.890 回答
0

要添加到所选答案,这也是可能的

         bool found = (from c in array
                      where c.SequenceEqual(searchFor)
                      select c).Count() > 0;

取决于您是否要使用类似 LINQ 的查询样式。

这是一个工作示例:

        var array = new List<byte[]>();

        var searchFor = new byte[] { 0xAA, 0xA0 };

        array.Add(searchFor);

         bool found = (from c in array
                      where c.SequenceEqual(searchFor)
                      select c).Count() > 0;
于 2013-10-26T00:53:30.160 回答