【问题标题】:how to compare two arrays of objects如何比较两个对象数组
【发布时间】:2009-12-15 13:19:51
【问题描述】:

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

我有两个 Person 对象数组。

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

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

并让它吐出两个新数组

Person[] peopleinFirstListandNotSecond
Person[] peopleinSecondListandNotFirst

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

【问题讨论】:

    标签: c# arrays .net-3.5 comparison


    【解决方案1】:

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

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

    【讨论】:

    • 您可能应该补充一点,他需要通过实现比较器或在 lambda 中进行比较来比较对象是否相等。除非靠自己解决不了问题。
    • 链接指向带有IEqualityComparer的链接。
    【解决方案2】:

    您可以编写一个比较器(实现IEqualityComparer interface),然后将其与Except 扩展方法一起使用,正如其他发帖人所指出的那样。

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-02
        • 1970-01-01
        相关资源
        最近更新 更多