score:1

Accepted answer
refinedresults = initialresults
    .where(x => {
        var m = regex.match(x, @"^(\d+)-(\d+)");
        return m.success
            && int.parse(m.groups[1]) >= data.timerange[0]
            && int.parse(m.groups[2]) <= data.timerange[1];
    }).toarray();

score:0

initialresults
    .select(x => new { 
        timelevel = x.timelevel, 
        minmaxpart = x.timelevel.split(' ')[0]
    })
    .select(x => new { 
        timelevel = x.timelevel, 
        min = int.parse(x.minmaxpart.split('-')[0].trim('+')),
        max = int.parse(x.minmaxpart.split('-')[1].trim('+'))
    })
    .where(x => x.min >= data.timerange[0] && x.max <= data.timerange[1])
    .select(x => x.timelevel)
    .toarray();

score:1

using system;
using system.linq;
using system.text.regularexpressions;

namespace consoleapplication2
{
    public class sampletime
    {
        public sampletime(string timelevel)
        {
            timelevel = timelevel;
        }

        public readonly string timelevel;
    }

    public class data
    {
        public int[] timerange = new int[2];
    }

    class program
    {
        private static void main(string[] args)
        {
            var initialresults = new []
            {
                new sampletime("0-5 minutes"),
                new sampletime("4-5 minutes"), // should be selected below.
                new sampletime("1-8 minutes"),
                new sampletime("4-6 minutes"), // should be selected below.
                new sampletime("4-7 minutes"),
                new sampletime("5-6 minutes"), // should be selected below.
                new sampletime("20-30 minutes")
            };

            // find all ranges between 4 and 6 inclusive.

            data data = new data();
            data.timerange[0] = 4;
            data.timerange[1] = 6;

            // the output of this should be (as commented in the array initialisation above):
            //
            // 4-5 minutes
            // 4-6 minutes
            // 5-6 minutes

            // here's the significant code:

            var refinedresults = 
            (
                from result in initialresults
                let numbers = regex.matches(result.timelevel, @"\d+")
                where ((int.parse(numbers[0].value) >= data.timerange[0]) && (int.parse(numbers[1].value) <= data.timerange[1]))
                select result
            ).toarray();

            foreach (var result in refinedresults)
            {
                console.writeline(result.timelevel);
            }
        }
    }
}

Related Query

More Query from same tag