(хорошо, я думаю, что это будет слишком долго для комментария)
Что вы подразумеваете под "Разницами в полях" и "одинаковыми предметами"?
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}};
минимальное использование (не знаю, какие объекты не совпадают, нет понятия, какое поле в объекте не соответствует)