2012-02-17 22 views
2

listに値が入力されているかどうかを確認しようとしています。これはユーザー入力です。ユーザーの入力はtxtIdというtextboxで、intです。 userIdが既にlistに存在する場合は、私のクラスAlreadyExistingIdExceptionから例外をスローする必要があります。ユーザーの入力に対してリストを確認しますか?

私はそれを私はContains()は、いくつかの無効な引数を持っているというエラーを取得しその方法を実行します。

private void btnAddClass_Click(object sender, EventArgs e) 
{ 
     Classes newClass; 
     // Open new form to input data 
      AddNewClass add_form = new AddNewClass(); 
      if (add_form.ShowDialog() == DialogResult.OK) 
      { 
       newClass = new Classes(); 
       // Get new data from second form 
       newClass = add_form.ExtractData(); 
       //check if id already exists in the list 
       **if (l.fitnessClasses.Contains(newClass.Id)) 
       { 
        //throw an exception 
       } 
       else 
       {** 
        // Add the new class to file 
        l.AddClass(newClass); 
        lstClasses.Items.Clear(); 
        //sort the list by ID 
        l.fitnessClasses.Sort((a, b) => a.Id.CompareTo(b.Id)); 

        foreach (Classes cl in l.fitnessClasses) 
        { 
         lstClasses.Items.Add(cl); //add to list box 
        } 


        // Display new 
        MessageBox.Show(newClass.Display()); 
       } 
      }  
    } 
+0

のようなものは、あなたが変数lを使用している –

+0

などのクラスの定義を追加行うことができます。これは何と定義されていますか? – Scottie

答えて

1

あなたはLINQに精通している場合は、

if (l.fitnessClasses.Any(x=> x.Id == newClass.ID)) {...} 
2

のいずれかをあなたのクラスはインスタンスを比較する方法を知っている必要があるので(ClassesEqualsGetHashCodeメソッドをオーバーライドし、そして、あなたが呼び出すことができますどのように)のためにmsdnを参照してください。

l.fitnessClasses.Contains(newClass); 

を使用したりLinq

l.fitnessClasses.Contains(p=> p.Id == newClass.Id)