【问题标题】:c# Comparing two List<T> Show Additions, Deletions and Property Changesc#比较两个List<T>显示添加、删除和属性变化
【发布时间】:2017-07-07 17:49:24
【问题描述】:

我有两个 myObj 类型的列表,定义如下:

public class myObj
{
    public int Id {get;set;}
    public string Name {get;set}
    public Address Address {get;set;}
}

这使用了另一个名为 Address 的类

public class Address
{
    public int Id {get;set;}
    public string Line1 {get;set}
    public string ZipCode {get;set;}
}

我有一个主子如下。

sub Main()
{
    var myTestObj1 = new List<myObj>(
        new myObj(){ Id = 1, Name = "Bob", new Address(){ Id = 1, Line 1= "", ZipCode = "90120"}},
        new myObj(){ Id = 2, Name = "Kaz", new Address(){ Id = 2, Line 1= "", ZipCode = "90121"}}
    );
    var myTestObj2 = new List<myObj>(
        new myObj(){ Id = 2, Name = "Kaz", new Address(){ Id = 2, Line 1= "", ZipCode = "00121"}}
        new myObj(){ Id = 3, Name = "Suz", new Address(){ Id = 3, Line 1= "", ZipCode = "99999"}}
    );
}

我需要做的是检查列表中的差异。从上面,我正在寻找以下内容。

寻找 myTestObj1 和 myTestObj2 之间的区别

我希望看到:

myObj id = 1 = New Record
myObj id = 2 = ZipCode has Changed
myObj id = 3 = Record to be deleted

到目前为止,我已经研究过使用反射,但示例仅显示了一对一的比较。

C# Compare Two Lists of Different Objects

Difference between two lists

Compare two List objects for equality, ignoring order

如果这是重复的,有人可以指出在哪里可以找到解决方案,因为我已经寻找了几个小时。

谢谢

【问题讨论】:

  • 在互联网上使用EqualityComparer 查找LINQ.Except
  • 您很可能最终会在某个时候比较列表中的各个对象,这里有一个可靠的答案 - stackoverflow.com/questions/2387946/…

标签: c# reflection system.reflection


【解决方案1】:

感谢您的建议,但最后我选择了一种更简单的方法。

我已向视图模型添加了一个新属性,该属性包含一个枚举值,用于添加、删除、更新或不更改。该视图将此字段添加为隐藏输入。然后它会被一些java脚本更新。

【讨论】:

    猜你喜欢
    • 2010-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    • 1970-01-01
    • 1970-01-01
    • 2016-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多