Проверить список против ввода пользователя? - PullRequest
2 голосов
/ 17 февраля 2012

Я пытаюсь проверить, содержит ли 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());
                }
            }     
    }

Ответы [ 2 ]

2 голосов
/ 17 февраля 2012

Переопределите методы Equals и GetHashCode в Classes (поскольку вашему классу нужно знать, как сравнивать экземпляры, см. msdn ), затем вы можете вызвать:

l.fitnessClasses.Contains(newClass); 

или используйте Linq

l.fitnessClasses.Contains(p=> p.Id == newClass.Id)
1 голос
/ 17 февраля 2012

Если вы знакомы с linq, вы можете сделать что-то вроде

if ( l.fitnessClasses.Any(x=> x.Id == newClass.ID)) {...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...