Существует множество способов справиться с этим. Вот пара:
Если вам не нужно указывать c значение метки времени, вы можете просто проверить, есть ли в convert
более двух элементов:
foreach (ProcessedItem item in changes)
{
var convert = item.id.Split('-');
string itemType = convert[0];
string itemId = convert[1];
if (convert.Length > 2)
{
return;
}
else
{
[rest of my code]
}
}
Это довольно неинвазивно для кода, который вы уже написали, но было бы непонятно, почему вы это делаете.
Другой вариант - использовать регулярное выражение . , что-то вроде:
^(?<Product>\w+)-(?<ItemNum>\d+\.\d+)-?(?<TimeStamp>\d{4}-\d{2}-\{2})?$
Для меня использование названных групп совершенно очевидно, но некоторые могут посчитать это решение излишним.
Если бы это был я, я бы также поместите всю эту логику c в свой собственный класс (например, ProcessedItemId
) или, по крайней мере, в метод stati c, чтобы его можно было использовать в другом месте.