public Intersect ( SqlExpressionType op, Field value ) : |
||
op | SqlExpressionType | |
value | Field | |
리턴 |
public static IEnumerable<int> SelectRows(this ITable table, int column, SqlExpressionType op, DataObject value) { // If the cell is of an incompatible type, return no results, var colType = table.TableInfo[column].ColumnType; if (!value.Type.IsComparable(colType)) { // Types not comparable, so return 0 return new List<int>(0); } // Get the selectable scheme for this column var index = table.GetIndex(column); // If the operator is a standard operator, use the interned SelectableScheme // methods. if (op == SqlExpressionType.Equal) return index.SelectEqual(value); if (op == SqlExpressionType.NotEqual) return index.SelectNotEqual(value); if (op == SqlExpressionType.GreaterThan) return index.SelectGreater(value); if (op == SqlExpressionType.SmallerThan) return index.SelectLess(value); if (op == SqlExpressionType.GreaterOrEqualThan) return index.SelectGreaterOrEqual(value); if (op == SqlExpressionType.SmallerOrEqualThan) return index.SelectLessOrEqual(value); // If it's not a standard operator (such as IS, NOT IS, etc) we generate the // range set especially. var rangeSet = new IndexRangeSet(); rangeSet = rangeSet.Intersect(op, value); return index.SelectRange(rangeSet.ToArray()); }