0

我想从包含以下内容的列表中删除重复的文件名:

http://www.test.com/download/imagename_A.jpg
http://www.test.com/download/imagename_B.jpg
http://www.test.com/download/imagename_C.jpg
http://fc07.test.net/fs49/f/2009/216/6/f/imagename_A.jpg
http://fc09.test.net/fs49/f/2009/195/d/8/imagename_B.jpg

我希望最终列表找到具有相同文件名的重复项,如果这样做,则在 domain.com 上选择 domain.net,从而生成以下最终列表:

http://fc07.test.net/fs49/f/2009/216/6/f/imagename_A.jpg
http://fc09.test.net/fs49/f/2009/195/d/8/imagename_B.jpg
http://www.test.com/download/imagename_C.jpg 

我怀疑这可以用 linq 来完成(我发现这篇文章 - Find Duplicate in list but with criteria),但我对 linq 的了解还不够,无法让它为我工作。

4

2 回答 2

2
var result = urls.GroupBy(url => Path.GetFileName(url))
                .Select(g => g.OrderByDescending(u=>new Uri(u).DnsSafeHost.EndsWith(".net")).First())
                .ToList();
于 2013-04-29T21:46:44.980 回答
0

您可以使用 string.split('/') 通过“/”拆分 URL(将 URL 转换为字符串之后),然后通过检查创建的数组的最后位置来比较文件名。然后,您可以使用 string.split('.') 拆分数组的第二个位置,并在该数组的第三个位置检查 .net/.com。

于 2013-04-29T22:03:15.040 回答