Это первая проблема:
if (!IsbnAuth.Contains(RecTitle))
{
Unknown++;
}
Это проверяет, содержит ли набор целом строку, как завершенный элемент.Похоже, что это не так.
Я подозреваю, что вы действительно хотите:
bool found = false;
foreach (String element in IsbnAuth)
{
if (element.Contains(RecTitle))
{
isbn = element.Split(' ')[0];
found = true;
break;
}
}
if (!found)
{
Unknown++;
}
Или даже лучше:
string isbn = IsbnAuth.Where(x => x.Contains(RecTitle))
.Select(x => x.Split(' ')[0])
.FirstOrDefault();
if (isbn == null)
{
Unknown++;
}
Стоит знать, что HashSet
находится в принципиально непредсказуемом порядке - поэтому, если здесь есть несколько совпадений, вы получите произвольный результат.Вы действительно этого хотите?