2016-05-12 48 views
1

我有一个从网站刮数据的控制台应用程序,这是刮削部:比较表,如果它在SQL表

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(); 
    } 
} 

我有名单与网址的集合,thumbUrlsList和MSSQL Express表名为Table,其列名为link

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

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

+0

是的,应该是可以的。你有'pageLinks'和数据库(链接列)中的项目的例子吗? – Ian

回答

2

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

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

和新thumbList

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

我们得到的是不存在数据库中使用此

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

一个简单的例子URL列表。你可以使用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 
      } 
     } 
    } 
}