Exemplo n.º 1
0
        private VariablesInfo Load3Files()
        {
            VariablesInfo result  = new VariablesInfo();
            VariablesInfo result1 = LoadFromFile(pastVariablesFile);
            VariablesInfo result2 = LoadFromFile(currentVariablesFile);

            if (result2.Dates == null || result2.Dates.Count == 0)
            {
                throw new Exception("无法加载: currentVariablesFile");
            }
            m_asofdate = result2.Dates[0];
            VariablesInfo result3 = LoadFromFile(futureVariablesFile);

            List <VariablesCsvRecord> items = new List <VariablesCsvRecord>();

            items.AddRange(result1.Variables);
            items.AddRange(result2.Variables);
            items.AddRange(result3.Variables);

            items = items.GroupBy(o => new { o.Name }).Select(o =>
            {
                var item = new VariablesCsvRecord
                {
                    Name        = o.Key.Name,
                    Description = o.First().Description
                };
                var values = o.SelectMany(m => m.Items);
                foreach (var v in values)
                {
                    if (!item.Items.ContainsKey(v.Key))
                    {
                        item.Items.Add(v.Key, v.Value);
                    }
                }
                return(item);
            }).ToList();
            result.Variables = items;
            result.Dates.AddRange(result1.Dates);
            result.Dates.AddRange(result2.Dates);
            result.Dates.AddRange(result3.Dates);
            result.Dates = result.Dates.Distinct().OrderBy(o => o).ToList();
            return(result);
        }
Exemplo n.º 2
0
        public void UpdateVariableValue(string name, DateTime d, string value, string description = null)
        {
            var item = Variables.Variables.FirstOrDefault(o => o.Name.Equals(name, StringComparison.CurrentCultureIgnoreCase));

            if (item == null)
            {
                item = new VariablesCsvRecord {
                    Name = name, Description = description ?? name
                };
                Variables.Variables.Add(item);
            }
            if (item.Items.ContainsKey(d))
            {
                item.Items[d] = value;
            }
            else
            {
                item.Items.Add(d, value);
            }
        }
Exemplo n.º 3
0
        private VariablesInfo LoadFromFile(string filename)
        {
            var       filepath = Path.Combine(m_dsFolder, filename);
            DataTable dt       = ExcelUtils.ReadCsv(filepath);
            DateTime  d;
            List <VariablesCsvRecord> values = new List <VariablesCsvRecord>();
            var columns = dt.Columns.Cast <DataColumn>().Select(o => o.ColumnName.Trim().ToLower())
                          .Select(o => DateTime.TryParse(o, out d) ? o : "")
                          .Where(o => !String.IsNullOrEmpty(o))
                          .ToList();

            foreach (DataRow row in dt.Rows)
            {
                var name = row.Field <string>("Name");
                var des  = row.Field <string>("Description");
                if (String.IsNullOrEmpty(name))
                {
                    continue;
                }
                VariablesCsvRecord item = new VariablesCsvRecord()
                {
                    Name        = name,
                    Description = des
                };
                values.Add(item);
                foreach (var col in columns)
                {
                    var    date  = Convert.ToDateTime(col);
                    string value = row[col] == DBNull.Value ? "" : row[col].ToString();
                    if (!string.IsNullOrEmpty(value))
                    {
                        item.Items.Add(date, value);
                    }
                }
            }
            return(new VariablesInfo {
                Variables = values, Dates = columns.Select(o => Convert.ToDateTime(o)).ToList()
            });
        }