示例#1
0
文件: Index1.cs 项目: mchuang/PUB
 private IEnumerable<ParadoxRecord> Enumerate(ParadoxCondition condition, ushort blockId, int indexLevel)
 {
     if (indexLevel == 0)
     {
         var block = this.table.GetBlock(blockId);
         for (int i = 0; i < block.RecordCount; i++)
         {
             var rec = block[i];
             if (condition.IsDataOk(rec))
             {
                 yield return rec;
             }
         }
     }
     else
     {
         var block = this.GetBlock(blockId);
         var blockIdFldIndex = this.FieldCount - 3;
         for (int i = 0; i < block.RecordCount; i++)
         {
             var rec = block[i];
             if (condition.IsIndexPossible(rec, i < block.RecordCount - 1 ? block[i + 1] : null))
             {
                 var qry = Enumerate(condition, (ushort)((short)rec.DataValues[blockIdFldIndex] - 1), indexLevel - 1);
                 foreach (var dataRec in qry)
                 {
                     yield return dataRec;
                 }
             }
         }
     }
 }
示例#2
0
文件: Index1.cs 项目: mchuang/PUB
 public IEnumerable<ParadoxRecord> Enumerate(ParadoxCondition condition)
 {
     return Enumerate(condition, (ushort)(this.pxRootBlockId - 1), this.pxLevelCount);
 }
示例#3
0
文件: Index1.cs 项目: mchuang/PUB
 protected Multiple(ParadoxCondition[] subConditions)
 {
     SubConditions = subConditions;
 }