3
我的控制檯應用程序將循環瀏覽每個用戶以獲取他們的網站,以便它可以獲取他們的新屏幕截圖。但是,爲了防止兩次截取同一網站的截圖,我必須檢查是否已經截取了該網站的截圖,同時通過另一個用戶網站進行了循環。檢查孩子是否重複
我目前的解決辦法是:
數據庫:
User
|--> ID: 1
|--> FirstName: Joe
|--> ID: 2
|--> FirstName: Stranger
Websites
|--> ID: 1
|--> UserID: 1
|--> URL: http://site.com
|--> ID: 2
|--> UserID: 2
|--> URL: http://site.com
控制檯應用程序:
static void RenewWebsiteThumbNails()
{
Console.WriteLine("Starting renewal process...");
using (_repository)
{
var websitesUpdated = new List<string>();
foreach (var user in _repository.GetAll())
{
foreach (var website in user.Websites.Where(website => !websitesUpdated.Contains(website.URL)))
{
_repository.TakeScreenDumpAndSave(website.URL);
websitesUpdated.Add(website.URL);
Console.WriteLine(new string('-', 50));
Console.WriteLine("{0} has successfully been renewed", website.URL);
}
}
}
}
但是,它似乎是錯誤的申報清單這樣的情景,只是爲了檢查是否一個特定的URL已經被添加了......對於另一種方式的任何建議?
@Jenea - 能否請你解釋一下'新的Hash()'是O(1),而'新目錄()'會爲O(n ) - 它有哪些不同? –
ebb
2011-02-26 15:41:35
@ebb - 爲了查找元素是否包含在列表中,應該迭代整個列表。 – 2011-02-26 15:44:50
@Jenea - Wouldnt'HashSet'做同樣的事,當我做'if(!websitesUpdated.Contains(website.URL)){..}'? – ebb 2011-02-26 15:51:15