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

标签 c# csv dictionary keyvaluepair

我很不好意思问这个问题,但我就是得不到我想要的结果。

我有一个如下所示的 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]);

我知道我可以像这样做一个 hacky/hard 代码:

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

关于c# - CSV 到字典,匹配列标题和行值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22938925/

相关文章:

c# - 如何通过 abcpdf 获取嵌入和引用字体的列表?

postgresql - 如何通过 alembic(从 CSV 文件)导入数据?

用于汇总 CSV 列的 Perl 脚本(或任何东西)

python - 为什么三元运算符比 .get 更快?

c# - 如何检测文件是 PDF 还是 TIFF?

c# - AspNetCore 无法加载类型 'Swashbuckle.AspNetCore.SwaggerGen.SwaggerResponseAttribute'

java - CSV 文件中的值包含不带引号的逗号字符

python - 为什么其他列表也发生变化?

ios - 来自 JSON 的字典中的键

c# - 通过坐标计算二维形状的最小外接矩形