List<Hoge> foo = list;
int idx = hoo.FindIndex(n=>n.value == (Hoge)hoge.value);

で取ったインデックスに、
if (idx > -1 && idx < hoo.Count)
 hoo.RemoveAt(idx);
ってするとたまにOutOfRangeExceptionが起こるんですが、
一体どういう事なんでしょうか
存在するインデックスをとって、範囲内か再度チェックしてるのに、
なおダメってイミフ

500回に一回くらいの割合で起こるので再現性がとても低いです・・・