public static void FixDuplicateTvDBLinks() { AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository(); // delete all TvDB link duplicates CrossRef_AniDB_TvDBRepository repCrossRefTvDB = new CrossRef_AniDB_TvDBRepository(); List<CrossRef_AniDB_TvDB> xrefsTvDBProcessed = new List<CrossRef_AniDB_TvDB>(); List<CrossRef_AniDB_TvDB> xrefsTvDBToBeDeleted = new List<CrossRef_AniDB_TvDB>(); List<CrossRef_AniDB_TvDB> xrefsTvDB = repCrossRefTvDB.GetAll(); foreach (CrossRef_AniDB_TvDB xrefTvDB in xrefsTvDB) { bool deleteXref = false; foreach (CrossRef_AniDB_TvDB xref in xrefsTvDBProcessed) { if (xref.TvDBID == xrefTvDB.TvDBID && xref.TvDBSeasonNumber == xrefTvDB.TvDBSeasonNumber) { xrefsTvDBToBeDeleted.Add(xrefTvDB); deleteXref = true; } } if (!deleteXref) xrefsTvDBProcessed.Add(xrefTvDB); } foreach (CrossRef_AniDB_TvDB xref in xrefsTvDBToBeDeleted) { string msg = ""; AniDB_Anime anime = repAnime.GetByAnimeID(xref.AnimeID); if (anime != null) msg = anime.MainTitle; logger.Warn("Deleting TvDB Link because of a duplicate: {0} ({1}) - {2}/{3}", xref.AnimeID, msg, xref.TvDBID, xref.TvDBSeasonNumber); repCrossRefTvDB.Delete(xref.CrossRef_AniDB_TvDBID); } }