возвращаемое поле diff из 2 коллекций - PullRequest
1 голос
/ 05 августа 2010

У меня есть две коллекции одного и того же объекта (один и тот же список размеров, конечно).элементы могут быть сопоставлены с помощью 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 ]

1 голос
/ 05 августа 2010

Это кажется разумным, возможно, я бы просто добавил ссылки на эти два объекта.

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;
}
0 голосов
/ 05 августа 2010

(хорошо, я думаю, что это будет слишком долго для комментария)

Что вы подразумеваете под "Разницами в полях" и "одинаковыми предметами"?

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

минимальное использование (не знаю, какие объекты не совпадают, нет понятия, какое поле в объекте не соответствует)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...