C# 不要在包含相同文本的列表中添加重复项

C# Do not add duplicated item in list that has same containing text

您好,我制作了一个包含 2 个列表的程序,(urls、filteredUrls) url 有重复的内容。过滤后的网址 假设有 urls 的项目没有重复 重复的内容示例:

https://mysql-code.com/app.php?=
https://mysql-code.com/app.asp?=1
https://www.page.com/app=123
http://www.page.com/app=123+2

如您所见,mysql-代码和页面是重复的,我为网址做了不同的列表,但是它只删除字面相同的项目,我只想删除仅包含相同文本的项目完全包含

我的代码

filteredUrls = urls.Distinct().ToList();
File.WriteAllLines(resFolder + @"\urls.txt", filteredUrls);

文件结果输出相同的文本包含但结尾或开头不同

要解析 URL 并访问其组件,请使用 Uri Class

下面的代码比较基于主机的 url:

var urls = new[] {
    "https://mysql-code.com/app.php?=",
    "https://mysql-code.com/app.asp?=1",
    "https://www.page.com/app=123",
    "http://www.page.com/app=123+2"
};

var result = urls
    .Select(url => new Uri(url))
    .ToLookup(uri => uri.Host, uri => uri)
    .Select(v => v.First());

foreach (var uri in result)
{
    Console.WriteLine(uri);
}

/*
https://mysql-code.com/app.php?=
https://www.page.com/app=123
*/