foreach (var file in d.GetFiles("*.csv"))
{
using (var reader = new StreamReader(file.FullName))
{
List<string> columns = new List<string>();
string colLine = File.ReadLines(file.FullName).First(); // gets the first line from file.
columns = colLine.Split(',').ToList();
reader.ReadLine(); // skip first line
dynamic x = new ExpandoObject();
var eoa = (IDictionary<string, object>)x;
while (!reader.EndOfStream)
{
var line = reader.ReadLine();
var values = line.Split(',');
for (int idx = 0; idx < values.Length; idx++)
{
if (values[idx] == "\"\"")
{
values[idx] = "[BLANK]";
}
}
int i = 0;
foreach (var value in values)
{
List<string> val = new List<string>();
val.Add(value);
if (!eoa.ContainsKey(columns.ElementAt(i)))
{
eoa.Add(columns.ElementAt(i), val);
}
else
{
List<string> overwrite = new List<string>();
var curr = eoa[columns.ElementAt(i)];
foreach (var v in (dynamic)curr)
{
overwrite.Add(v);
}
overwrite.Add(value);
eoa[columns.ElementAt(i)] = overwrite;
}
i++;
}
}
using (StreamWriter outFile = new StreamWriter(path + @"\output.txt"))
{
foreach (var entry in eoa)
{
var test = entry.Value as List;
outFile.Write("{0}:{1} ", entry.Key, entry.Value);
}
}
}
}
我目前无法获得属于测试变量的索引的值。我尝试做test [0],但得到错误“无法将带有[]的索引应用于'object'类型的表达式。我很好奇我可以尝试的其他方法,以便可以访问属于Value的值的这些列表元素我的字典。
答案 0 :(得分:1)
您的值似乎是object
类型,并且错误表明您无法直接对其应用索引。您必须将其强制转换为List<string>
才能使用test [0]。