Попробуйте использовать System.Convert
. В частности, вас могут заинтересовать ToInt32
и ToDecimal
. Эти функции принимают строку (или один из различных других типов данных) и преобразуют ее в int
или decimal
соответственно.
var data = (from x in xEl3.Descendants(nsPriceHr + "HOEP")
orderby System.Convert.ToDecimal(x.Element(nsPriceHr + "Price").Value) descending
select new HourPrice
{
Hour = System.Convert.ToInt32(x.Element(nsPriceHr + "Hour").Value),
Price = System.Convert.ToDecimal(x.Element(nsPriceHr + "Price").Value)
})
.ToList();
Edit:
Вот один способ проверить пропущенные значения:
string valueString = x.Element("ElementName").Value;
int value = String.IsNullOrEmpty(valueString) ? 0 : Convert.ToInt32(valueString);
Если ваша проблема в том, что строки не пустые, но и не в правильном формате, вам придется преобразовать их в правильный формат, прежде чем преобразовать. То есть вы должны снять $
со строки, как $6.47
.