проверить наличие дубликатов в объекте, используя все значения минус несколько - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь сохранить новый объект в моей БД и хочу проверить, находится ли он уже в БД перед сохранением.

И я хочу проверить наличие дубликатов, посмотрев, совпадают ли определенные значения в объектах.

У меня есть

class Person 
{
  public string name
  public int age
  public string address
  public int zipCode
...
...
  public string createdBy
  public DateTime createdDate
}

Меня не волнует, совпадают ли createBy и CreatedDate или нет, но мне важны все остальные значения.

Вместо того, чтобы делать проверку следующим образом:

if (person1.name == person2.name && person1.age == person2.age &&
    person1.address == person2.address && person1.zipCode == person2.zipCode 
    ....... )
{
  //it's a duplicate
}

Мне интересно, есть ли что-то вроде:

if (person1 == person2 [ignore createdBy && createdDate] )
{
  //it's a duplicate
}

РЕДАКТИРОВАТЬ: я добавил дополнительные свойства в качестве примера, потому что мой объект имеет около 15 свойств в общей сложности, и я хочу сравнить только 13 свойств вместо всех 15. Я знаю, что проверка каждого отдельного свойства вручную - вариант, но мне интересно если есть способ сравнить объект минус 2 или 3 свойства, так как это будет проще, чем сравнивать 13 свойств.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2019

Не знаю, поможет ли это вам, но вот решение:

class Person{
    public string name;
    public float age;

    public string createdBy;

    public string GetValue(){
        return (name + " " + age.ToString());
    }
}

static void Main(){
    Person p1 = new Person();
    p1.age = 0; 
    p1.name = "hello";
    p1.createdBy = "no-one";
    Person p2 = new Person();
    p2.age = 0;
    p2.name = "hello";
    p2.createdBy = "me";
    if (p1.GetValue() == p2.GetValue())
        Console.WriteLine("hello");
0 голосов
/ 25 апреля 2019

Вы можете сделать свой собственный метод для этого.

    public bool IsDuplicatePerson(Person person1, Person person2)
    {
        if (person1.name == person2.name && person1.age == person2.age) return true;
        else return false;
    }

И затем вызвать его по:

if(!IsDuplicatePerson(person1,person2))
{
     //do work
}
...