LINQ, чтобы получить ближайшее значение?

У меня есть список, MyStuff имеет свойство типа Float.

Существуют объекты со значениями свойств 10,20,22,30.

Мне нужно написать запрос, который находит объекты ближе к 21, в этом случае он найдет объекты 20 и 22. Затем мне нужно написать тот, который находит, что объект закрывается до 21 без перехода, и он возвратил бы объект со значением 20.

Я понятия не имею, где / как начать с этого. Помогите?

Благодарю.

Обновление - вау, здесь так много классных ответов. Спасибо! Я не знаю, за кем следовать, поэтому попробую их все. Одна вещь, которая может сделать это более (или менее) интересным, состоит в том, что один и тот же запрос должен будет применяться к сущностям LINQ-to-SQL, поэтому, возможно, ответ, полученный на форумах MS Linq, будет работать лучше? Не знаю

Ответы на вопрос(4)

Ваш ответ на вопрос