C# 比较两个List集合内容是否相同

2021-10-23更新
List<byte> l1=new List<byte>{0x01,0x02,0x03}

List<byte> l2=new List<byte>{0x01,0x02,0x03}

//上面l1和l2内容是一样的

l1==l2;//这样返回为假
l1.Equals(l2);//这样也为假
l1.SequenceEqual(l2);//这样才为真   Linq 自带函数SequenceEqual 查看内容是否一样


//====================================================================================
//2019-05-02 更新
//有的时候  两个集合内容一样 但是  集合内元素顺序不一样,用以上方法判断都是false
//以下是解决  判断两个集合的所有元素都否都一样
List<byte> l3=new List<byte>{0x11,0x22,0x03}
List<byte> l4=new List<byte>{0x22,0x11,0x03}

bool b1 = l4.All(l3.Contains);
//判断l3里面是否都包含l4里面的所有元素这里为true
//如果l3里面的元素为{0x11,0x22,0x03,0x04} 比l4{0x22,0x11,0x03}多一个元素  这里也为true 
//如果l3里面的元素为{ 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x11 } 比l4{0x22,0x11,0x03}多6一个元素  这里也为true 
//如里l4里面元素为{0x22,0x11,0x03,0x04} l3里面元素为{0x11,0x22,0x03} 则b1为false

bool b3 = l3.SequenceEqual(l4); //结果为false
//l3和l4里面内容都一样 但顺序不一样 如果像上面 l1和l2内容和顺序也一样则为true

评论

  1. 118.122.97.*2021-11-24 12:08:25
    l4.All(l3.Contains) && l3.All(l4.Contains)