LISTから特定の条件に合った要素を取り除きたいんだけど、これListの後ろからやらないと消した時に一個ずれておかしなことになるよね

//dataはList<int>ですでに数値が入っている
foreach(int i in data){
 if(Linqで書くのが困難な複雑な判定) data.RemoveAt(i);
}

どうやりゃいいんだ!?