3
私のコンソールアプリケーションは、自分のウェブサイトを取得するために各ユーザーをループします。そのため、新しいコンソールのスクリーンショットを撮ることができます。しかし、同じWebサイトのスクリーンショットを2回撮るのを防ぐために、別のユーザーのWebサイトをループしながら、すでにWebサイトのスクリーンショットを撮っているかどうかをチェックする必要があります。子の重複を確認する
私の現在のソリューションは、次のとおりです。
データベース:
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 - あなたは '新しいハッシュは()' Oだろう方法を説明してもらえ(1) 'N(Oだろう'新しいリスト()しながら、 ) - それはどのように違うのですか? –
ebb
@ebb - 要素がリストに含まれているかどうかを調べるには、リスト全体を反復処理する必要があります。 –
@Jenea - Wouldnt 'HashSet'は、' if(!websitesUpdated.Contains(website.URL)){..} 'と同じことをしますか? – ebb