LINQ: check whether two list are the same

The SetEquals of HashSet is best suited for checking whether two sets are equal as defined in this question

        string stringA = "1,2,2";
        string stringB = "2,1";

        HashSet<string> setA = new HashSet<string>((stringA.Trim()).Split(',').Select(t => t.Trim()));
        HashSet<string> setB = new HashSet<string>((stringB.Trim()).Split(',').Select(t => t.Trim()));

        bool isSetsEqual = setA.SetEquals(setB);

REFERENCE:

  1. Check whether two comma separated strings are equal (for Content set)

Edit: This was written before the OP added that { 1, 2, 2 } equals { 1, 1, 2 } (regarding handling of duplicate entries).

This will work as long as the elements are comparable for order.

bool equal = list1.OrderBy(x => x).SequenceEqual(list2.OrderBy(x => x));

You need to get the intersection of the two lists:

bool areIntersected = t1.Intersect(t2).Count() > 0;

In response to you're modified question:

bool areSameIntersection = t1.Except(t2).Count() == 0 && t2.Except(t1).Count() == 0;

var same = list1.Except(list2).Count() == 0 && 
           list2.Except(list1).Count() == 0;

Tags:

Linq