gpt4 book ai didi

c# - 如何比较两个数组列表?

转载 作者:太空狗 更新时间:2023-10-30 00:34:15 27 4
gpt4 key购买 nike

我有以下代码:

List<byte[]> list1 = new List<byte[]>();
list1.Add(new byte[] { 0x41, 0x41, 0x41, 0x41, 0x78, 0x56, 0x34, 0x12 });

List<byte[]> list2 = new List<byte[]>();
list2.Add(new byte[] { 0x41, 0x41, 0x41, 0x41, 0x78, 0x56, 0x34, 0x12 });
list2.Add(new byte[] { 0x42, 0x42, 0x42, 0x42, 0x78, 0x56, 0x34, 0x12 }); // this array

IEnumerable<byte[]> list3 = list2.Except(list1);

我希望 list3 只包含 list2 但不在 list1(标记为“此数组”的那个)中的 byte[] 数组,但它只返回 list2 的所有内容。然后我尝试了以下操作:

List<byte[]> list3 = new List<byte[]>();
foreach (byte[] array in list2)
if (!list1.Contains(array))
list3.Add(array);

但这让我得到了同样的结果。我做错了什么?

最佳答案

ExceptContains 都会调用对象的Equals 方法。但是,对于数组,Equals 只是执行引用相等性检查。要比较内容,请使用 SequenceEqual 扩展方法。

您必须在循环中更改支票:

List<byte[]> list3 = new List<byte[]>();
foreach (byte[] array in list2)
if (!list1.Any(a => a.SequenceEqual(array)))
list3.Add(array);

关于c# - 如何比较两个数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8281348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com