public AuditQuery(IQueryable <AuditEntity> baseQuery, ICriteriaBuilder <AuditEntity> criteriaBuilder) { this.criteriaBuilder = criteriaBuilder ?? throw new ArgumentNullException(nameof(criteriaBuilder)); // Transforms inputs into upper case to criteriaBuilder .AddStringTransform(nameof(AuditEntity.NormalisedAction), i => i.ToUpperInvariant()) .AddStringTransform(nameof(AuditEntity.NormalisedSubject), i => i.ToUpperInvariant()) .AddStringTransform(nameof(AuditEntity.NormalisedResource), i => i.ToUpperInvariant()) .AddStringTransform(nameof(AuditEntity.NormalisedSource), i => i.ToUpperInvariant()); Query = baseQuery ?? throw new ArgumentNullException(nameof(baseQuery)); }