比较列表是否在 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
}
}
}
}
我有一个从网站抓取数据的控制台应用程序,这是抓取部分:
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
}
}
}
}