maheshnayak60 Ответов: 2

Вычислить строковое выражение в языке Си#


У меня есть следующее строковое выражение ,которое я пытаюсь запустить, но получаю ошибку, говоря, что формат строки неверен

var result = new List<XYZ>();

public class XYZ
{
  public String  Timezone {get;set;}
  public Decimal? B1Volume { get; set; }
  public Decimal? B2Volume { get; set; }
  public Decimal? B3Volume { get; set; }
public Decimal? B4Volume { get; set; }
  public Decimal? B5Volume { get; set; }
  .............
  .............
 public Decimal? B24Volume { get; set; }
}

for (i = diffvol; i < result.count; i++)
{
    B1Volume = Convert.ToDecimal(String.Format("result[0].B{0}Volume", i));
   
}


Что я уже пробовал:

var london = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
                var googleplex = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
                var now = DateTimeOffset.UtcNow;
                TimeSpan londonOffset = london.GetUtcOffset(now);
                TimeSpan googleplexOffset = googleplex.GetUtcOffset(now);
                TimeSpan difference = londonOffset - googleplexOffset;

for (i= diffvol.hours;i< result.count; i++)
{
   //Code to implement

}

2 Ответов

Рейтинг:
1

OriginalGriff

Посмотрите на то, что вы пытаетесь сделать:

B1Volume = Convert.ToDecimal(String.Format("result[0].B{0}Volume", i));
Строка, которую вы пытаетесь преобразовать, будет
result[0].B0Volume
Затем
result[0].B1Volume

result[0].B2Volume
И так далее. Ни один из них не преобразуется в десятичные значения, о чем и говорит вам сообщение об ошибке.
учитывая, что ваш код находится внутри цикла и будет использоваться только конечное значение, я бы создал метод для возврата одного значения и использовал switch чтобы выбрать, из какой переменной возвращать значение.


maheshnayak60

У меня есть более подробная информация об этом вопросе по этой ссылке
https://www.codeproject.com/Questions/1213313/Moving-an-item-within-the-generic-list-based-on-ti

Рейтинг:
1

Dave Kreskowiak

Да, вы не можете выполнить строку, как если бы это был код C#. Это не сработает.

Покажите, что вы пытаетесь сделать с этим, и приведите некоторые примеры данных.


maheshnayak60

Я также поставил подробный вопрос в этой ссылке
https://www.codeproject.com/Questions/1213313/Moving-an-item-within-the-generic-list-based-on-ti

Dave Kreskowiak

Итак, вы размещаете несколько копий одного и того же вопроса здесь, на CP? Это считается грубостью на любом форуме.

Обновите существующий вопрос, этот, с новой информацией вместо того, чтобы открывать новые вопросы.