List<List<String>> ls = new List<List<String>>();
List<String> l1 = new List<String>();
l1.Add("Peter");
l1.Add("123");
ls.Add(l1);
List<String> l2 = new List<String>();
l2.Add("Peter");
l2.Add("123");
ls.Add(l2);
ls = ls.Distinct().ToList();
我假设 ls 中只有一个元素,但实际上还有 2 个元素。可能的原因是什么?
最佳答案
那是因为 List<T>
没有Equals
和 GetHashCode
已实现,因此正在执行标准引用比较。它返回 false,因为您有两个分开的列表。
你可以自己写IEqualityComparer<List<string>>
实现并将其提供为 Distinct
方法参数。在比较器中,您可以使用 Enumerable.SequenceEqual
) 方法来检查列表是否具有相同的内容。
关于c# - List.Distinct()可以应用于List<List<String>>的列表类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18202894/