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

2019-05-02更新
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 
//如里l4里面元素为{0x22,0x11,0x03,0x04} l3里面元素为{0x11,0x22,0x03} 则b1为false
// 所以再通长集合总个数判断两个集合里面元素都一样


bool b2 = (l4.All(l3.Contains)&&l4.Count == l3.Count);
//这样才可以判断两个集合的元素是否都一样 结果b2为true

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

评论