コード例 #1
0
        public static void AddToChunks(this Series series, List <double> values, int chunkSize)
        {
            if (values.Count > chunkSize)
            {
                throw new ArgumentException(nameof(values));
            }

            if (values.Count == 0)
            {
                return;
            }

            if (series.Chunks.Count == 0 || series.Chunks.Last().Chunk.Count == chunkSize)
            {
                series.AddChunk(new ValuesChunk {
                    Chunk = values
                });
                return;
            }

            var missing = chunkSize - series.Chunks.Last().Chunk.Count;

            if (values.Count <= missing)
            {
                series.Chunks.Last().Chunk.AddRange(values);
            }
            else
            {
                series.Chunks.Last().Chunk.AddRange(values.Take(missing));
                series.AddChunk(new ValuesChunk {
                    Chunk = values.Skip(missing).ToList()
                });
            }
        }