比较列表是否在 SQL table 列

Compare list if it's in SQL table Column

我有一个从网站抓取数据的控制台应用程序,这是抓取部分:

private static void getPageThumbLinks()
{
    thumbUrlsList = new List<string>();
    HtmlWeb web = new HtmlWeb();
    web.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36";
    foreach (string value in pageLinks)
    {

        HtmlDocument doc = web.Load("http://www.example.com/" + value);
        foreach (HtmlNode nodes in doc.DocumentNode.SelectNodes("//td[@class='searchResultsSmallThumbnail']/a"))
        {
            HtmlAttribute href = nodes.Attributes["href"];
            var hreflink = href.Value;
            thumbUrlsList.Add(hreflink);
            //Console.WriteLine(hreflink);
        }
        compareToSql();
    }
}

我有一个包含 URL 集合的列表,thumbUrlsList 和一个名为 Table 的 MSSQL Express table 以及一个名为 link.

的列

是否可以将此列表与数据库 link 列进行比较并检查它是否存在?

如果是的话,你能举个例子吗?
我们将不胜感激。谢谢。

假设你有一个数据库中已经存在的link列表是dbList。

var dbList = new List<string>() { "Dave", "Steve", "Pete" };

和你的新 thumbList

var thumbList = new List<string>() { "Dave", "Steve", "Pete", "Paul", "Mike" };

现在要获取数据库中不存在的 url 列表,请使用此

var newLinkList = thumbList.Except(dbList).ToList();

一个简单的例子。您可以使用 LINQ 来检查它是否存在。

private static void getPageThumbLinks()
{
    thumbUrlsList = new List<string>();
    HtmlWeb web = new HtmlWeb();
    web.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36";
    foreach (string value in pageLinks)
    {

        HtmlDocument doc = web.Load("http://www.example.com/" + value);
        foreach (HtmlNode nodes in doc.DocumentNode.SelectNodes("//td[@class='searchResultsSmallThumbnail']/a"))
        {
            HtmlAttribute href = nodes.Attributes["href"];
            var hreflink = href.Value;
            thumbUrlsList.Add(hreflink);
            //Console.WriteLine(hreflink);

            // Here is where you check if the DataTable has the link
            // Table is a DataTable containing the results of your query
            var containsLink = Table.AsEnumerable().Any(row => link == row.Field<string>("link"));

            if (containsLink) 
            {
                // do something with it
            }
        }
    }
}