Для начала вам нужен способ сравнения целочисленных массивов. Чтобы использовать его с классами в фреймворке, вы делаете это путем создания EquailtyComparer. Если массивы всегда отсортированы, это довольно просто реализовать:
public class IntArrayComparer : IEqualityComparer<int[]> {
public bool Equals(int[] x, int[] y) {
if (x.Length != y.Length) return false;
for (int i = 0; i < x.Length; i++) {
if (x[i] != y[i]) return false;
}
return true;
}
public int GetHashCode(int[] obj) {
int code = 0;
foreach (int value in obj) code ^= value;
return code;
}
}
Теперь вы можете использовать целочисленный массив в качестве ключа в HashSet для получения уникальных массивов:
int[][] selection = {
new int[] { 1 }, // column A
new int[] { 6 }, // column F
new int[] { 6 }, // column F
new int[] { 8, 9 }, // columns H:I
new int[] { 8, 9 }, // columns H:I
new int[] { 12, 15 } // columns L:O
};
HashSet<int[]> arrays = new HashSet<int[]>(new IntArrayComparer());
foreach (int[] array in selection) {
arrays.Add(array);
}
HashSet просто отбрасывает дублирующиеся значения, поэтому теперь он содержит четыре целочисленных массива.