其他分享
首页 > 其他分享> > CSV到字典,匹配列标题和行值?

CSV到字典,匹配列标题和行值?

作者:互联网

问这个问题我感到很尴尬,但是我根本无法达到我想要的结果.

我有一个看起来像这样的CSV文件:

Col_Title_1|Col_Title_2|Col_Title_3|Col_Title_4|Col_Title_5
  Value_1  |  Value_2  |  Value_3  |  Value_4  |  Value_5

我想读取这些数据并对其进行处理,例如(伪代码):

var test = array.Column("Col_Title_3").Value;

我似乎无法配对该列并据此进行估值.

字典或KeyValuePair是否最适合使用?

这是我做过的1个好的测试,但当然不能100%起作用:

Dictionary<string, string> dict = File.ReadLines(e.FullPath).Select(line =>
line.Split('|')).ToDictionary(line => line[0], line => line[1]);

我知道我可以这样修改代码/硬代码:

string lineValues = File.ReadLines(e.FullPath).ElementAt(1);
string row3 = lineValues.Split('|')[2];
string row5 = lineValues.Split('|')[4];

但是出于明显的原因,我不想这样做.

任何帮助将不胜感激!谢谢大家!

解决方法:

你可以做这样的事情.

var lines = File.ReadLines("test.txt");
var header  = lines.First().Split('|');
var data = lines.Skip(1).First().Split('|');
var dict = new Dictionary<string, string>();
for (int i = 0; i < header.Length; i++)
{
    dict.Add(header[i], data[i]);
}

Console.WriteLine("Taking Col_Title_3 -> {0}", dict["Col_Title_3"]);
foreach (var i in dict.Keys)
{
    Console.WriteLine("key: {0} value: {1}",i,dict[i]);
}

或者可以选择像这样填充字典

var lines = File.ReadLines("test.txt");
var header = lines.First().Split('|');
var data = lines.Skip(1).First().Split('|');            
var dict = header.Select((a, i) => new { key = a, data = data[i] })
              .ToDictionary(b => b.key, c => c.data);

标签:dictionary,csv,keyvaluepair,c
来源: https://codeday.me/bug/20191029/1961820.html