private ChartItemCollection CreateMultipleItemCollection(IEnumerable <ChartItem>[] chartItemsList, CollectionId id, IPen[] pens) { List <MultipleChartItem> mItems = new List <MultipleChartItem>(chartItemsList[0].Count()); IEnumerator <ChartItem>[] its = new IEnumerator <ChartItem> [chartItemsList.Length]; for (int i = 1; i < chartItemsList.Length; i++) { its[i] = chartItemsList[i].GetEnumerator(); its[i].MoveNext(); } double[] invalidValues = new double[chartItemsList.Length - 1]; for (int i = 0; i < invalidValues.Length; i++) { invalidValues[i] = ChartItemCollection.valueNA; } foreach (var cItem in chartItemsList[0]) { MultipleChartItem mItem = new MultipleChartItem() { Date = cItem.Date, Value = cItem.Value, ValueChange = cItem.ValueChange, Values = new List <double>(invalidValues), ValueChanges = new List <double>(invalidValues) }; for (int i = 1; i < chartItemsList.Length; i++) { if (its[i].Current.Date > cItem.Date) { continue; } mItem.Values[i - 1] = its[i].Current.Value; mItem.ValueChanges[i - 1] = its[i].Current.ValueChange; its[i].MoveNext(); } mItems.Add(mItem); } return(new MultipleChartItemCollection(id, mItems, pens)); }
private ChartItemCollection CreateMultipleItemCollection(IEnumerable<ChartItem>[] chartItemsList, CollectionId id, IPen[] pens) { List<MultipleChartItem> mItems = new List<MultipleChartItem>(chartItemsList[0].Count()); IEnumerator<ChartItem>[] its = new IEnumerator<ChartItem>[chartItemsList.Length]; for (int i = 1; i < chartItemsList.Length; i++) { its[i] = chartItemsList[i].GetEnumerator(); its[i].MoveNext(); } double[] invalidValues = new double[chartItemsList.Length - 1]; for(int i = 0; i < invalidValues.Length; i ++) { invalidValues[i] = ChartItemCollection.valueNA; } foreach (var cItem in chartItemsList[0]) { MultipleChartItem mItem = new MultipleChartItem() { Date = cItem.Date, Value = cItem.Value, ValueChange = cItem.ValueChange, Values = new List<double>(invalidValues), ValueChanges = new List<double>(invalidValues) }; for(int i = 1; i < chartItemsList.Length; i ++) { if (its[i].Current.Date > cItem.Date) { continue; } mItem.Values[i - 1] = its[i].Current.Value; mItem.ValueChanges[i - 1] = its[i].Current.ValueChange; its[i].MoveNext(); } mItems.Add(mItem); } return new MultipleChartItemCollection(id, mItems, pens); }
private List <MultipleChartItem> Combine(List <MultipleChartItem> one, List <MultipleChartItem> other, int j) { ChartItemComparer comparar = new ChartItemComparer(); int iOne = 0; int iOther = 0; for (; iOther < other.Count; iOther++) { if (iOne >= one.Count) { one.AddRange(other.Skip(iOther).Select(mItem => { var tempItem = new MultipleChartItem() { Value = ChartItemCollection.valueNA, Date = other[iOther].Date, ValueChange = ChartItemCollection.valueNA, Values = one[0].Values != null ? new List <double>(invalidValues) : null, ValueChanges = one[0].ValueChanges != null ? new List <double>(invalidValues) : null }; tempItem.Values[j] = mItem.Value; tempItem.ValueChanges[j] = mItem.ValueChange; return(tempItem); })); break; } if (one[iOne].Date == other[iOther].Date) { one[iOne].Values[j] = other[iOther].Value; one[iOne].ValueChanges[j] = other[iOther].ValueChange; iOne++; } else if (one[iOne].Date > other[iOther].Date) { var tempItem = new MultipleChartItem() { Value = ChartItemCollection.valueNA, Date = other[iOther].Date, ValueChange = ChartItemCollection.valueNA, Values = one[0].Values != null ? new List <double>(invalidValues) : null, ValueChanges = one[0].ValueChanges != null ? new List <double>(invalidValues) : null }; tempItem.Values[j] = other[iOther].Value; tempItem.ValueChanges[j] = other[iOther].ValueChange; one.Insert(iOne, tempItem); iOne++; } else { int iOneTemp = one.BinarySearch(iOne, one.Count - iOne, other[iOther], comparar); if (iOneTemp < 0) { iOneTemp = ~iOneTemp; if (iOneTemp == one.Count) { one.AddRange(other.Skip(iOther).Select(mItem => { var tempItem = new MultipleChartItem() { Value = ChartItemCollection.valueNA, Date = other[iOther].Date, ValueChange = ChartItemCollection.valueNA, Values = one[0].Values != null ? new List <double>(invalidValues) : null, ValueChanges = one[0].ValueChanges != null ? new List <double>(invalidValues) : null }; tempItem.Values[j] = mItem.Value; tempItem.ValueChanges[j] = mItem.ValueChange; return(tempItem); })); break; } else { var tempItem = new MultipleChartItem() { Value = ChartItemCollection.valueNA, Date = other[iOther].Date, ValueChange = ChartItemCollection.valueNA, Values = one[0].Values != null ? new List <double>(invalidValues) : null, ValueChanges = one[0].ValueChanges != null ? new List <double>(invalidValues) : null }; tempItem.Values[j] = other[iOther].Value; tempItem.ValueChanges[j] = other[iOther].ValueChange; one.Insert(iOneTemp, tempItem); iOne = iOneTemp + 1; } } else { one[iOneTemp].Values[j] = other[iOther].Value; one[iOneTemp].ValueChanges[j] = other[iOther].ValueChange; iOne = iOneTemp + 1; } } } return(one); }