How to use predicate builder for a string range

23 Views Asked by At

This expression works fine for a date range, how would I do the same for a string range:

                expression = expression.And(x => x.ProductReceivedDate <= options.ProductReceivedDateEnd)
                    .And(x => x.ProductReceivedDate >= options.ProductReceivedDateStart);


        if (!string.IsNullOrEmpty(options.PlateNumberFrom))
        {
            expression = expression.And(x => x.InventoryNumber.CompareTo(options.PlateNumberFrom) >= string.Compare(x.InventoryNumber, options.PlateNumberFrom));

        }

        if (string.IsNullOrEmpty(options.PlateNumberTo))
            options.PlateNumberTo = options.PlateNumberFrom;

        if (!string.IsNullOrEmpty(options.PlateNumberTo))
        {
            expression = expression.And(x => x.InventoryNumber.CompareTo(options.PlateNumberTo) <= string.Compare(x.InventoryNumber, options.PlateNumberFrom));
        }
1

There are 1 best solutions below

0
Kelvin On

Solved:

expression = expression
  .And(x => x.InventoryNumber.CompareTo(options.PlateNumberFrom) >= 0)
  .And(x => x.InventoryNumber.CompareTo(options.PlateNumberTo) <= 0);