>>403でもアドバイスしたけど
その手の処理は主にゲームプログラミングで必須の基礎技術だから
「衝突判定 総当り」とかで検索すれば類似コード腐るほど出てくる
例えばこういうコード

var list = new List<int> { 1, 2, 3 };
for(int i = 0; i < list.Count; i++)
 for(int j = i + 1; j < list.Count; j++)
  Unko(list[i], list[j]); // なんか処理