Это не точно , чего вы хотели избежать: по крайней мере, это числовой индекс.Но это заставляет меня задуматься, где объявлен ваш исходный набор данных.
foreach (DataRow row in run(query).Tables[0].Rows)
{
//
}
И просто предупреждаю: ваш метод run () является анти-паттерном.Я вижу, что многие люди хотят абстрагировать вызов базы данных от простого метода, который принимает строку, и они почти всегда забывают одну важную вещь: параметры запроса.Результатом является код, замкнутый по всему проекту, который использует конкатенацию строк для создания sql небезопасными способами.