我有两个相同对象的集合(当然大小相同的列表)。可以通过IEqualityComparer匹配项目(匹配对象的唯一属性)。
我想从这些现有列表中生成一个新列表,只显示每个集合中每个“相同”项的字段差异。我在考虑做这样的事情
List<ObjectFieldDiff> list = CalcList(origList1, origList2);
,其中
public class ObjectFieldDiffs
{
public List<FieldDiff> FieldDiffs;
}
public class FieldDiff
{
public string PropertyName;
public string Object1Value;
public string Object2Value;
}
这是否有意义。有什么建议吗?
答案 0 :(得分:1)
这似乎是合理的,也许我只会添加指向这两个对象的链接。
public class FieldDiff
{
public object Object1;
public object Object2;
public string PropertyName;
public object Object1Value;
public object Object2Value;
}
或者,如果所有属性都是数字,则可以存储差异:
public class FieldDiff
{
public object Object1;
public object Object2;
public string PropertyName;
public object ValueDifference;
}
答案 1 :(得分:0)
(好吧,我认为评论的时间太长了)
“场差异”和“相同”项目是什么意思?
class Point { public int X; public int Y;}
Point[] origList1 = new Point[1] {new Point() {X = 5, Y = 10}};
Point[] origList2 = new Point[1] {new Point() {X = 5, Y = 11}};
List<ObjectFieldDiff> list = CalcList(origList1, origList2);
您对list
的期望是什么?
从我能从你那里得到的问题来看,它将是:
new List<FieldDiff>(1) {new FieldDiff() {ValueObject1=10, ValueObject2=11}};
这是最小的用途(不知道哪个对象不匹配,不知道对象不匹配中的哪个字段)