c# - List.Distinct()可以应用于List<List<String>>的列表类型吗?

标签 c# list

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>没有EqualsGetHashCode已实现,因此正在执行标准引用比较。它返回 false,因为您有两个分开的列表。

你可以自己写IEqualityComparer<List<string>>实现并将其提供为 Distinct 方法参数。在比较器中,您可以使用 Enumerable.SequenceEqual ) 方法来检查列表是否具有相同的内容。

关于c# - List.Distinct()可以应用于List<List<String>>的列表类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18202894/

相关文章:

c# - 如何使用 JWT token ASP.NET MVC

c# - 正则表达式 (RegEx) - 一个字符串可变长度

python - Item 输入列表,ItemID 输出列表

javascript - 正则表达式替换列表中的 0 但不是 10、20、30 等中的 0 - 使用 js 替换

python - 如何在 python 列表中查找彼此相邻的重复项并根据它们的索引列出它们?

C# - 标记自定义窗体的基类使设计 View 显示 HTML

javascript - 向用户呈现多条确认消息的最佳方式

c# - P4标签视场

c# - 从文件读取时出现无限循环问题

python - 如何对Python嵌套列表中的数据进行分类