whereCriterion method

FastSeekListCSV whereCriterion(
  1. LoadCriterion criterion
)

Implementation

FastSeekListCSV whereCriterion(LoadCriterion criterion) {
  final List<int> matchedIndices = [];
  for (final requestedField in criterion.requestedFields) {
    matchedIndices.add(
      header.indexWhere((field) => field.name == requestedField),
    );
  }

  final List<ListRecord> newRecordIndex = [];
  for (final individualRecordIndex in recordIndex) {
    for (final record in individualRecordIndex) {
      if (criterion.criterion(
        matchedIndices
            .map((e) => e == -1 ? null : record[e])
            .toList(growable: false),
      )) {
        newRecordIndex.add(record);
      }
    }
  }

  return FastSeekListCSV.fromListCSV(
    ListCSVFile(header: header, records: newRecordIndex),
  );
}