2012-02-17 38 views
2

我试图检查一个list是否包含一个值,这是用户输入。用户输入为textbox,名称为txtId,它是一个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

添加 – 2012-02-17 18:19:08

+0

您正在使用的变量l类等的定义。这是什么定义? – Scottie 2012-02-17 18:49:26

回答

1

如果你熟悉LINQ,你可以这样做

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

要么覆盖Equals并在ClassesGetHashCode方法(因为你的类需要知道如何比较的情况下,看到msdn对于如何),那么你可以拨打:

l.fitnessClasses.Contains(newClass); 

或使用Linq

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