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); }
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); } }
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() }); }