Предполагая, что вам нужно, чтобы они были уникальными для WebPage и WebSiteId
IEnumerable<WebsiteWebPage> data = GetWebPages();
foreach (var value in data)
{
if (value.WebPage.Contains(".htm"))
{
WebsiteWebPage pagesinfo = new WebsiteWebPage();
if (db.WebsiteWebPages.All(c=>c.WebPage != value.WebPage|| c.WebsiteId != websiteid))
{
pagesinfo.WebPage = value.WebPage;
pagesinfo.WebsiteId = websiteid;
db.WebsiteWebPages.Add(pagesinfo);
}
}
}
db.SaveChanges();
ОБНОВЛЕНИЕ
Для оптимизации этого (учитывая, что ваш таблица содержит гораздо больше данных, чем ваш текущий список), переопределите ваш класс equals
в WebsiteWebPage
, чтобы определить критерии уникальности, а затем:
var myWebsiteWebPages = data.select(x=> new WebsiteWebPage { WebPage = x.WebPage, WebsiteId = websiteid}).Distinct();
var duplicates = db.WebsiteWebPages.Where(x=> myWebsiteWebPage.Contains(x));
db.WebsiteWebPages.AddRange(myWebsiteWebPages.Where(x=> !duplicates.Contains(x)));
это один запрос к базе данных, чтобы получить ТОЛЬКО дубликаты, а затем удалить их из списка