//Добавляет мгновенное значение в список, возвращает количество добавленных значений //Если skipEqual, то пропускает значения, равные предыдущим private int MomentToList(Moment mv, bool skipEqual = true) { if (Value == null) { Value = new SingleValue(SingleType.List); } var list = Value.Moments; var last = list.Count == 0 ? null : list[list.Count - 1]; if (!skipEqual || last == null || (last.Time < mv.Time && (last != mv || last.Nd != mv.Nd))) { list.Add(mv); return(1); } return(0); }
//Изменяет тип данных всех мгновенных значений на dt public SingleValue ChangeDataType(DataType dt) { if (Type == SingleType.Moment && Moment != null && !dt.LessOrEquals(Moment.DataType)) { return(new SingleValue(Moment.Clone(dt))); } if (Type == SingleType.List && Moments != null && !dt.LessOrEquals(DataType)) { var sv = new SingleValue(SingleType.List); foreach (var m in Moments) { sv.AddMoment(m.Clone(dt)); } return(sv); } return(this); }