获取与查询

时间:2015-09-12 05:19:21

标签: c# linq anglesharp

我使用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取一个值,但select / distinct不起作用。

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

1 个答案:

答案 0 :(得分:1)

正如Reza所说,ToLower()是必需的,更简单的方法是首先选择pathName,然后进行过滤:

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