Как не дать создавать одинаковые объекты в ObservableCollection?

У меня есть ObservableCollection в которой есть класс содержащий поле Name нужно чтобы при попытке задать имя которое уже существует, выскакивало предупреждение. Я пытался реализовать метод Equals в классе но в MainViewModel но при Jobs.Contains(value) получал ошибку связанную с преобразованием.

class Job 
    {   
        public  string Name
        {
            get { return name; }
            set
            {
            name = value;
            }
        }
       private string name;
    }
class MainViewModel 
    {
        public ObservableCollection<Job> Jobs { get; set; } = new ObservableCollection<Job>();
        public ObservableCollection<Job> _Jobs
        {
            get { return Jobs; }
            set
            {
               /* if (Jobs.Contains(value)) 
                {
                    //ошибка
                }*/
                Jobs = value;    
            }
        }

Ответы (1 шт):

Автор решения: Progmech

Из всех комментариев я бы посоветовал использовать решение предложенное @Alexander Petrov. В случае если вам просто нужно вывести сообщение при добавлении элемента с существующим в коллекции именем, предлагаю использовать подписку на событие:

var model = new MainViewModel();
model.Jobs.CollectionChanged += JobsCollectionChanged;

void JobsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    if (e.Action != NotifyCollectionChangedAction.Add 
        || sender is not ObservableCollection<Job> jobs 
        || e.NewItems == null) return;
    for(var i = e.NewItems.Count - 1; i >= 0; i--)
    {
        var job = e.NewItems[i] as Job;
        if (job == null) continue;
        if(jobs.Any(j => j.Name == job.Name))
        {
            // Ваше сообщение
        }
    }
}
→ Ссылка