Any idea on how to check whether that list is a subset of another?
Specifically, I have
List<double> t1=new List<double>{1,3,5}
List<double> t2=new List<double>{1,5}
How to check that t2 is a subset of t1, using LINQ?
Any idea on how to check whether that list is a subset of another?
Specifically, I have
List<double> t1=new List<double>{1,3,5}
List<double> t2=new List<double>{1,5}
How to check that t2 is a subset of t1, using LINQ?
Try this
static bool IsSubSet<A>(A[] set, A[] toCheck) {
return set.Length == (toCheck.Intersect(set)).Count();
}
The idea here is that Intersect will only return the values that are in both Arrays. At this point if the length of the resulting set is the same as the original set, then all elements in "set" are also in "check" and therefore "set" is a subset of "toCheck"
Note: My solution does not work if "set" has duplicates. I'm not changing it because I don't want to steal other people's votes.
Hint: I voted for Cameron's answer.
Use HashSet instead of List if working with sets. Then you can simply use IsSubsetOf()
HashSet<double> t1 = new HashSet<double>{1,3,5};
HashSet<double> t2 = new HashSet<double>{1,5};
bool isSubset = t2.IsSubsetOf(t1);
Sorry that it doesn't use LINQ. :-(
If you need to use lists, then @Jared's solution works with the caveat that you will need to remove any repeated elements that exist.