0

我正在使用 Anglesharp 解析网页,然后发现可能是联系页面的链接。

这是我的代码:

        var config = Configuration.Default.WithDefaultLoader();

        string address = "http://www.stackoverflow.com/";

        Url baseurl = new Url(address);

        var document = await BrowsingContext.New(config).OpenAsync(baseurl);

        var links = document.Links.Where(x => ((IHtmlAnchorElement)x).Host == baseurl.Host ).ToList();

        var contacts = links.Where(x => ((IHtmlAnchorElement)x).PathName.ToLower().Contains("contact")).Select(x => ((IHtmlAnchorElement)x).PathName).Distinct();

它有效,但我在联系人中得到重复的 PathName 值。我只想为每个值取一个值,PathName但选择/区别不起作用。

我必须创建自己的自定义比较器还是有办法改变我的 linq 查询?我不需要任何其他数据,只需要主机和路径名。

4

1 回答 1

1

正如 Reza 所说,ToLower()需要,一种更简单的方法是选择第pathName一个,然后进行过滤:

var contacts = links.Select(x => ((IHtmlAnchorElement)x).PathName.ToLower())
                    .Where(pathName => pathName.Contains("contact"))
                    .Distinct();
于 2015-09-12T12:02:08.873 回答