Вы звоните ToString
по запросу, а не по одному результату.Даже если вы ожидаете, что только одно значение будет соответствовать вашему запросу, оно не будет возвращать только одно значение.Вы должны указать это, используя Single
, First
, Last
или их варианты, которые также возвращают значение по умолчанию (SingleOrDefault
, FirstOrDefault
, LastOrDefault
).
Чтобы избежать исключения, вы можете изменить его на использованиеDecimal.TryParse
или вы можете изменить свой код на значение по умолчанию, если запрос LINQ возвращает что-то, что не будет проанализировано должным образом.Я бы порекомендовал первый или их комбинацию.
Обратите внимание, что в следующем примере я добавил вызов к SingleOrDefault .Это гарантирует, что анализируется только одно значение, даже если значение не найдено, и что при наличии нескольких результатов мы получаем исключение (т. Е. Оно гарантирует, что мы получаем ровно ноль или один результат для запроса).*