使用Linq获取唯一条目

时间:2014-02-03 13:37:28

标签: c# asp.net linq

我有一个需要通读文本文件的linq语句。它需要使用网址并将其剥离以获取域名。然后,我想要获取唯一的域并将它们写回文件。

这是我到目前为止所拥有的:

        var urls = File.ReadAllLines(badLinks)
            .Where(x => x.IsNotNullOrEmpty())
                .Select(x => ManipulateUrl(x))
                .Distinct()
                .ToList();

问题是,我注意到Distinct()函数只包含一个域,如果在更改后我真正重新评估列表并创建一个唯一列表时,操作条目是Distinct enties(域名)。

任何帮助表示感谢。

*更新*

对不起,伙计们,在分解列表后发现源文件存在问题。很难看到100k的记录。

1 个答案:

答案 0 :(得分:2)

你的代码看起来肯定是正确的,唯一让人想到的是ManipulateURL是否正在抛弃它。

您是否尝试将代码拆分为两个单独的语句,即:

var urls = File.ReadAllLines(badLinks)
            .Where(x => x.IsNotNullOrEmpty())
            .Select(x => ManipulateUrl(x));

var distinctURLS = urls.Distinct().ToList();

至少以这种方式,您可以单步执行代码并验证urls是否正如您所期望的那样填充。