Divide decimal by range of fractions, and then convert the fraction that is closest to a whole number to a mixed fraction
Trust the math.

        var fraction = 1 / i;
        var result = myDecimal / fraction;


is a long way to say

        var result = myDecimal * i;

Collecting results in the list is just a waste of space. You may maintain the most accurate candidate as you do compute results:

    for (double i = 1; i &lt; 49; i++)
    {
        var result = myDecimal * i;
        var roundedResult = Math.Round(result);
        var remainder = roundedResult - result;
        if (remainder &lt; bestRemainder) {
            bestRemainder = remainder;
            bestDenominator = i;
        }
    }