Я не уверен, что полностью понимаю ваш вопрос, но кажется, что вы пытаетесь удалить запись из коллекции, пока вы все еще просматриваете ее. (что приведет к ошибке индекса массива)
Вы должны сохранить ссылку на каждую запись, которую хотите удалить, в новой коллекции, а затем удалить все новые записи из старой коллекции:
DataRow[] dr = payments.dtPayments.Select(myselect);
List<DataRow> rowsToRemove = new List<DataRow>();
for (int a = 0; a < dr.Length; a++) {
if(/* You want to delete this row */) {
rowsToRemove.Add(dr[a]);
}
}
foreach(var dr in rowsToRemove) {
payments.dtPayments.Rows.Remove(dr);
}