返回字段来自2个集合

时间:2010-08-05 14:32:08

标签: c# collections

我有两个相同对象的集合(当然大小相同的列表)。可以通过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;
}

这是否有意义。有什么建议吗?

2 个答案:

答案 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}};

这是最小的用途(不知道哪个对象不匹配,不知道对象不匹配中的哪个字段)