Значения
NULL уровня базы данных нужно проверять с
DBNull.Value.
Если цены хранятся в виде строк, то следует учитывать, что в разных культурах может использоваться разный десятичный разделитель. Лучше хранить данные сразу в виде числе, чтобы не было проблем с преобразованием форматов, и код работал быстрее.
"Цена" в представленном коде является просто строкой, содержащей слово "Цена". Если это имя поля, то следует обращаться к нему через
myRow.
from myRow in dt.AsEnumerable()
where myRow["Цена"] != DBNull.Value
orderby double.Parse(myRow["Цена"])
select myRow;