我不确定我是否完全理解你的问题,但是当你还在循环时,你似乎试图从集合中删除一个条目.(这会导致数组索引错误)
您应该在新集合中保存对要删除的每个条目的引用,然后从旧集合中删除所有新条目:
DataRow[] dr = payments.dtPayments.Select(myselect); ListrowsToRemove = new List (); 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); }