Я пытаюсь выяснить, как лучше всего сравнить и объединить два List<T>
с новым генерируемым List<T>
, который сравнивает несколько свойств в каждом объекте.
class Account
{
public Account() { }
public string ID { get; set; }
public string Name { get; set; }
public string Value { get; set; }
}
List<Account> Mine = new List<Account>();
List<Account> Yours = new List<Account>();
List<Account> Ours = new List<Account>();
Account m1 = new Account(){ ID = null, Name = "C_First", Value = "joe" };
Account m2 = new Account(){ ID = null, Name = "C_Last", Value = "bloggs" };
Account m3 = new Account(){ ID = null, Name = "C_Car", Value = "ford" };
Mine.Add(m1);
Mine.Add(m2);
Mine.Add(m3);
Account y1 = new Account(){ ID = "1", Name = "C_First", Value = "john" };
Account y2 = new Account(){ ID = "2", Name = "C_Last", Value = "public" };
Yours.Add(y1);
Yours.Add(y2);
Полученный List<Account> Ours
будет иметь следующие List<Account>
объекты:
{ ID = "1", Name = "C_First", Value = "joe" };
{ ID = "2", Name = "C_Last", Value = "bloggs" };
{ ID = null, Name = "C_Car", Value = "ford" };
Мне нужно выяснить, как лучше всего сравнивать свойства ID и Value между обоими объектами List<Account>
, где List<Account> Yours
ID имеет приоритет над List<Account> Mine
, а List<Account> Mine
Value имеет приоритет над List<Account> Yours
, а также добавляется любой объект, которого нет в List<Account> Yours
.
Я пробовал следующее:
Ours = Mine.Except(Yours).ToList();
что приводит к тому, что List<Ours>
становится пустым.
Я прочитал этот пост Разница между двумя списками, в котором Джон Скит упоминает использование пользовательского IEqualityComparer<T>
для делаю то, что мне нужно, но я застрял в том, как создать IEqualityComparer<T>
, который сравнивает более 1 значения свойства.