По-моему, не все так однозначно. Эта тема обсуждалась также в блоге Эрика Липперта, в заметке
Style follows semantics:
Цитата:
The stylistic choices should typically be driven by a desire to clearly communicate the semantics of the program fragment.
Мне кажется, в данном случае использование while может при беглом просмотре кода сбить с толку, поэтому вариант с простым select firstonly и проверкой результата все же предпочтительнее за счет большей выразительности. Кроме того, с точки зрения последующей возможной модификации код лучше сразу писать так, чтобы для его изменения нужно было править как можно меньше строк исходного кода Х++; совсем хорошо, если модификации можно просто дописать в нужном месте, не изменяя строки исходного код Х++ вовсе. Так вот, если понадобится, к примеру, добавить ветвление для случая, когда запись не найдена, то в варианте с if можно будет просто дописать блок else {}, а для while select придется изголяться - к примеру, вводить какую-то переменную-флаг, изменять ее внутри цикла и затем анализировать - вся экономия строк кода моментально улетучится, а читабельности это все совсем не прибавит.