注文が問題ではない場合でも、実行可能なオプションとしてSequenceEqualを除外しません。
var lst1 = new [] { 2,2,2,2 };
var lst2 = new [] { 2,3,4,5 };
var lst3 = new [] { 5,4,3,2 };
//your current function which will return true
//when you compare lst1 and lst2, even though
//lst1 is just a subset of lst2 and is not actually equal
//as mentioned by Wim Coenen
(lst1.Count() == lst2.Count() &&
!lst1.Except(lst2).Any()); //incorrectly returns true
//this also only checks to see if one list is a subset of another
//also mentioned by Wim Coenen
lst1.Intersect(lst2).Any(); //incorrectly returns true
//So even if order doesn't matter, you can make it matter just for
//the equality check like so:
lst1.OrderBy(x => x).SequenceEqual(lst2.OrderBy(x => x)); //correctly returns false
lst3.OrderBy(x => x).SequenceEqual(lst2.OrderBy(x => x)); // correctly returns true
あなた自身のコードにはバグがあります。実際に[排他的論理和](http://en.wikipedia.org/wiki/)をチェックしたいので、両方向で「Except」を使用する必要があります。 Exclusive_disjunction)が空です。 –
@ウィム修正! –
これはバグがあります。 '{1、1、2}'と '{1,2,2} 'に対して真を返します。 – jason