LINQ:检查两个列表是否相同

Gra*_*ton 17 linq

这应该很容易.

我想检查两个列表是否相同,因为它们包含所有相同的元素,订单并不重要.

重复的元素被认为是相等的,即,它们new[]{1,2,2}是相同的new[]{2,1}

lep*_*pie 32

var same = list1.Except(list2).Count() == 0 && 
           list2.Except(list1).Count() == 0;
Run Code Online (Sandbox Code Playgroud)

  • 更"linq-ish"版本:`!list1.Except(list2).Any()&&!list2.Except(list1).Any()` (13认同)
  • @TLS并不需要计算所有差异,只需第一个。 (2认同)

Sam*_*ell 6

编辑:这是在OP添加{1,2,2}等于{1,1,2}之前编写的(关于重复条目的处理).

只要元素与订单具有可比性,这将起作用.

bool equal = list1.OrderBy(x => x).SequenceEqual(list2.OrderBy(x => x));
Run Code Online (Sandbox Code Playgroud)