public int Compare(SoodaObject dbo1, SoodaObject dbo2) { _context1.SetRootObject(dbo1); _context2.SetRootObject(dbo2); foreach (ExpressionCompareInfo eci in expressions) { object v1 = eci.Expression.Evaluate(_context1); object v2 = eci.Expression.Evaluate(_context2); int result = DoCompare(v1, v2); if (result != 0) { if (eci.SortOrder == SortOrder.Ascending) { return(result); } else { return(-result); } } } return(PrimaryKeyCompare(dbo1, dbo2)); }