private static void RemoveReverseMapping(Join <TKey> .Row mapping, JoinSide joinSide, Dictionary <int, HashSet <int> > columnRowsToJoinRows) { if (joinSide == JoinSide.Left) { var leftRowsToJoinRow = columnRowsToJoinRows[mapping.LeftRowId.Value]; if (mapping.RowId.HasValue) { leftRowsToJoinRow.Remove(mapping.RowId.Value); } else { leftRowsToJoinRow.Clear(); } if (leftRowsToJoinRow.Count == 0) { columnRowsToJoinRows.Remove(mapping.LeftRowId.Value); } } else { var rightRowsToJoinRow = columnRowsToJoinRows[mapping.RightRowId.Value]; if (mapping.RowId.HasValue) { rightRowsToJoinRow.Remove(mapping.RowId.Value); } else { rightRowsToJoinRow.Clear(); } if (rightRowsToJoinRow.Count == 0) { columnRowsToJoinRows.Remove(mapping.RightRowId.Value); } } }
private static bool IsRowForOtherSide(Join <TKey> .Row row, JoinSide joinSide, int rowIndex) { return(joinSide == JoinSide.Left ? row.LeftRowId == rowIndex && row.RightRowId == null : row.RightRowId == rowIndex && row.LeftRowId == null); }
private static bool IsRow(Join <TKey> .Row row, JoinSide joinSide, int rowIndex) { return(joinSide == JoinSide.Left ? row.LeftRowId == rowIndex : row.RightRowId == rowIndex); }
private int GetOtherSideIndex(Join <TKey> .Row row, JoinSide joinSide) { return(joinSide == JoinSide.Left ? row.RightRowId.GetValueOrDefault(-1) : row.LeftRowId.GetValueOrDefault(-1)); }