コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
 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);
 }
コード例 #3
0
 private static bool IsRow(Join <TKey> .Row row, JoinSide joinSide, int rowIndex)
 {
     return(joinSide == JoinSide.Left ? row.LeftRowId == rowIndex : row.RightRowId == rowIndex);
 }
コード例 #4
0
 private int GetOtherSideIndex(Join <TKey> .Row row, JoinSide joinSide)
 {
     return(joinSide == JoinSide.Left ? row.RightRowId.GetValueOrDefault(-1) : row.LeftRowId.GetValueOrDefault(-1));
 }