вы можете использовать Linq, применив функцию Distinct с пользовательским компаратором, например следующий код:
1 - Создать пользовательский шаблон c для компаратора List<T>
:
public class GenericComparer<T> : IEqualityComparer<List<T>>
{
public bool Equals(List<T> x, List<T> y)
{
return x.Count == y.Count && x.All(xx => y.Contains(xx));
}
public int GetHashCode(List<T> obj)
{
int hashCode = 0;
foreach(T str in obj)
{
hashCode ^= str.GetHashCode();
}
return hashCode;
}
}
2 - вызов функции Distinct с помощью StringListComparer
, например:
List<List<string>> mylist = new List<List<string>>()
{
new List<string> { "a", "b", "c" },
new List<string> { "d", "e", "f" },
new List<string> { "g", "h", "i" },
new List<string> { "c", "a", "b" },
new List<string> { "a", "c", "b" },
new List<string> { "f", "d", "e" },
};
var result = mylist.Distinct(new GenericComparer<string>()).ToList();
3 - демонстрация
foreach(List<string> strList in result)
{
Console.WriteLine(string.Join(",", strList));
}
4- результат
a,b,c
d,e,f
g,h,i
Если у вас есть список целых чисел, вы можете вызвать метод Distinct
, например:
var result1 = mylist1.Distinct(new GenericComparer<int>()).ToList();
Надеюсь, это поможет вам.