Przykład:
int[] ar1 = { 1, 2, 3, 3 };
int[] ar2 = { 1, 3 };
int[] ar3 = ar1.Except(ar2).ToArray();
int[] ar4 = ar1.Intersect(ar2).ToArray();
Tablica
ar3
będzie zawierać jeden element
2
. Przydałaby się metoda, która zachowywałaby się jak odjęcie zbioru od zbioru:
public static IEnumerable<T> Substract<T>(this IEnumerable<T> a_enumerable, IEnumerable<T> a_values)
{
List<T> list = new List<T>(a_values);
foreach (T ele in a_enumerable)
{
int index = list.IndexOf(ele);
if (index != -1)
list.RemoveAt(index);
else
yield return ele;
}
}
Teraz:
int[] ar5 = ar1.Substract(ar2).ToArray();
zwróci nam zbiór
{ 2, 3}
.