C# 从嵌套列表中删除几乎重复的项

C# 从嵌套列表中删除几乎重复的项,c#,nested-lists,C#,Nested Lists,如果我有以下子列表,如何删除“重复项”,以便只剩下L1、L2和L3?我不介意保留哪种变体,只要复制品消失了 List<List<string>> mylist = new List<List<string>>(); List<string> L1 = new List<string> { "a", "b", "c" }; List<string> L2 = new List<string> { "d"

如果我有以下子列表,如何删除“重复项”,以便只剩下L1、L2和L3?我不介意保留哪种变体,只要复制品消失了

List<List<string>> mylist = new List<List<string>>();
List<string> L1 = new List<string> { "a", "b", "c" };
List<string> L2 = new List<string> { "d", "e", "f" };
List<string> L3 = new List<string> { "g", "h", "i" };
List<string> L4 = new List<string> { "c", "a", "b" };
List<string> L5 = new List<string> { "a", "c", "b" };
List<string> L6 = new List<string> { "f", "d", "e" };
List mylist=new List();
列表L1=新列表{“a”、“b”、“c”};
列表L2=新列表{“d”、“e”、“f”};
列表L3=新列表{“g”、“h”、“i”};
列表L4=新列表{“c”、“a”、“b”};
列表L5=新列表{“a”、“c”、“b”};
列表L6=新列表{“f”、“d”、“e”};

值得一提的是,我正在删除重复项以提高程序另一部分的性能,因此任何过于密集的操作都是不合适的。谢谢

您可以通过将函数与自定义比较器一起应用来使用Linq,如以下代码所示:

1-为
列表创建自定义通用比较器

3-演示

foreach(List<string> strList in result)
{
    Console.WriteLine(string.Join(",", strList));
}
如果有整数列表,可以调用
Distinct
方法,如:

var result1 = mylist1.Distinct(new GenericComparer<int>()).ToList();
var result1=mylist1.Distinct(新的GenericComparer()).ToList();

我希望这能帮到你。

到目前为止,你尝试了什么?这是一个很好的答案,谢谢。出于兴趣-如果它们是整数列表而不是字符串,你会有什么不同的做法?我更新了我的答案,使用字符串或int的通用比较器。你能对答案进行投票吗?
foreach(List<string> strList in result)
{
    Console.WriteLine(string.Join(",", strList));
}
a,b,c
d,e,f
g,h,i

var result1 = mylist1.Distinct(new GenericComparer<int>()).ToList();