教えてください

■質問1
下記のような構造体を配列にして内容を格納しています
(本来はもっとパラメータは多いですが簡略して3つにしてます)

struct test {
 private int id; //100000以上からの6桁
 private string name;
 private int type;

 public Test(int ID, string Name, int Type) {
  id = ID;
  name = Name;
  type = Type;
 }
}

この構造体配列の中から該当するIDを検索し、その添え字番号を得たいです
ForEachやwhileなどのループ内でIDを比較するしかないでしょうか?

「C# 構造体 検索」でぐぐってみたものの、
どのようにすればいいのかが見当もつきませんでした

■質問2
そもそも、このようなデータを構造体として用意するのは良いのでしょうか?


以上、よろしくおねがいします