У меня есть класс, который содержит месяцы свойства:C# объекта игнорировать месяцев свойства поддержания соседа отношений при выполнении расчетов
public class Item
{
public Item()
{
}
public decimal Jan { get; set; }
public decimal Feb { get; set; }
public decimal Mar { get; set; }
public decimal Apr { get; set; }
public decimal May { get; set; }
public decimal Jun { get; set; }
public decimal Jul { get; set; }
public decimal Aug { get; set; }
public decimal Sep { get; set; }
public decimal Oct { get; set; }
public decimal Nov { get; set; }
public decimal Dec { get; set; }
}
Там также является Dictionary<string, decimal>
Dictionary<string, decimal> values = new Dictionary<string, decimal>();
values.add("Jan", 10.00);
values.add("Feb", 10.00);
values.add("Mar", 10.00);
values.add("Apr", 10.00);
values.add("May", 10.00);
values.add("Jun", 10.00);
values.add("Jul", 10.00);
values.add("Aug", 10.00);
values.add("Sep", 10.00);
values.add("Oct", 10.00);
values.add("Nov", 10.00);
values.add("Dec", 10.00);
десятичных значения в словаре значений могут любые десятичные значения, для демонстрационной цели я добавил 10.00.
Мне нужно рассчитать эти значения следующим образом:
Item.Jan = values["Jan"];
Item.Feb = Item.Jan + values["Feb"];
Item.Mar = Item.Feb + values["Mar"];
Item.Apr = Item.Mar + values["Apr"];
Item.May = Item.Apr + values["May"];
Item.Jun = Item.May + values["Jun"];
Item.Jul = Item.Jun + values["Jul"];
Item.Aug = Item.Jul + values["Aug"];
Item.Sep = Item.Aug + values["Sep"];
Item.Oct = Item.Sep + values["Oct"];
Item.Nov = Item.Oct + values["Nov"];
Item.Dec = Item.Nov + values["Dec"];
До сих пор так хорошо. Все работает хорошо.
Проблема заключается в следующем: мне нужно игнорировать определенное свойство месяцев от Item
класс. Игнорируемые месяцы будут иметь значение равного 0.
Если словарь содержит следующие значения:
Dictionary<string, decimal> values = new Dictionary<string, decimal>();
values.add("Feb", 10.00);
values.add("Mar", 10.00);
values.add("Apr", 10.00);
values.add("Jun", 10.00);
values.add("Jul", 10.00);
values.add("Aug", 10.00);
values.add("Oct", 10.00);
values.add("Nov", 10.00);
values.add("Dec", 10.00);
уведомления Jan, May, Sep
отсутствует, как я могу выполнить мой расчет, со значениями, при условии, в словаре, а также поддерживать отношение в расчете от предыдущего месяца? Первый месяц в словаре считается первым. Первый месяц Item
всегда равен значению только из словаря.
расчет в этом случае будет:
Item.Jan = 0.00;
Item.Feb = values["Feb"]; // Jan is missing from dictionary first month is Feb
Item.Mar = Item.Feb + values["Mar"];
Item.Apr = Item.Mar + values["Apr"];
Item.May = 0.00;
Item.Jun = Item.Apr + values["Jun"]; // May is missing, Jun = previous available month (Apr) + dictionary value of Jun
Item.Jul = Item.Jun + values["Jul"];
Item.Aug = Item.Jul + values["Aug"];
Item.Sep = 0.00;
Item.Oct = Item.Aug + values["Oct"]; // Sep is missing, Oct = previous available month (Aug) + dictionary value of Aug
Item.Nov = Item.Oct + values["Nov"];
Item.Dec = Item.Nov + values["Dec"];
EDIT:
Чтобы сделать его более ясным:
Когда все месяцы данные приведены в Словаре, мой расчет отлично работает.
- item.Jan = value ["Jan"];
- item.Feb = item.Jan + value ["Feb"];
- и так далее
Когда определенные месяцы отсутствуют Словарь, расчет должен быть такой:
- пропавших месяцев имеют значение 0
- первый ключ из словаря будет определить первое свойство класса Item, которое будет иметь значение = значение словаря ["ключ"].
Моя единственная проблема заключается в поддержании отношения к предыдущему элементу, в случае отсутствия мая, item.Jun = item.Apr + значение ["Jun"] и так далее.
Похож на [XY-problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – Eser
Попробуйте следующее: Item.Jan = values.ContainsKey ("Jan ")? values ["Jan"]: 0; – jdweng