我试图弄清楚如何最好地将两个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" };
我需要弄清楚如何最好地比较两个List<Account>
对象之间的 ID 和 Value 属性,其中List<Account> Yours
ID 优先于List<Account> Mine
并且List<Account> Mine
Value 优先于List<Account> Yours
任何未List<Account> Yours
添加的对象。
我尝试了以下方法:
Ours = Mine.Except(Yours).ToList();
这导致List<Ours>
为空。
我已经阅读了这篇文章两个列表之间的区别,其中 Jon Skeet 提到使用自定义IEqualityComparer<T>
来做我需要的事情,但我坚持如何创建一个IEqualityComparer<T>
比较多个属性值的比较。