如何比较两个对象数组

时间:2009-12-15 13:19:51

标签: c# arrays .net-3.5 comparison

我有一个名为的对象。它具有 First,Last,Age 等属性。 。

我有两个Person对象数组。

我想要一些函数来取两个数组

Person[] firstlist =  . .
Person[] secondList =  . . 

让它吐出两个新阵列

Person[] peopleinFirstListandNotSecond
Person[] peopleinSecondListandNotFirst

由于这些不是字符串数组,我想对名字和姓氏进行比较以确定它是否是同一个人

3 个答案:

答案 0 :(得分:7)

这是一个linq函数(IEnumerable<T>.Except(...)),可以满足你的需要。

http://msdn.microsoft.com/en-us/library/bb336390.aspx

答案 1 :(得分:5)

您可以编写一个比较器(实现IEqualityComparer interface),然后将其与Except扩展方法一起使用,正如其他海报所述。

或者,您可以在lambda中进行比较,例如

var peopleinFirstListAndNotSecond =     
    firstList.
    Where( p => 
            !secondList.Any( s => 
                s.Age == p.Age && 
                s.FirstName == p.FirstName && 
                s.SecondName == p.SecondName
         ) 
    );

答案 2 :(得分:0)

实施IComparable(请参阅SO: IComparable and Equals),然后遍历每个列表,构建所需的两个输出列表。