Without using LINQ and assuming that there are only values > 0 in an input collection. There's no need to sort the collection first.
public Tuple<float, float> GetClosestValues(IEnumerable<float> values, float target)
{
float lower = 0;
float upper = Single.MaxValue;
foreach (var v in values)
{
if (v < target && v > lower) lower = v;
if (v > target && v < upper) upper = v;
}
return Tuple.Create(lower, upper);
}