C# check if one collection of values contains another
<p>Suppose I have two collections as follows:</p>

<p>Collection1:
"A1"
"A1"
"M1"
"M2"</p>

<p>Collection2:
"M2"
"M3"
"M1"
"A1"
"A1"
"A2"</p>

<p>all the values are string values. I want to know if all the elements in Collection1 are contained in Collection2, but I have no guarantee on the order and a set may have multiple entries with the same value. In this case, Collection2 does contain Collection1 because Collection2 has two A1's, M1 and M2. Theres the obvious way: sorting both collections and popping off values as i find matches, but I was wondering if there's a faster more efficient way to do this. Again with the initial collections I have no guarantee on the order or how many times a given value will appear</p>

<p>EDIT: Changed set to collection just to clear up that these aren't sets as they can contain duplicate values</p>
