我正在阅读一个 CSV 文件,并且基本上是尝试使用标题来确定文件中值的顺序位置,尽管最后一部分给我带来了一些麻烦。以下是我到目前为止所拥有的:private static IEnumerable<Cow> ReadCowStream(Stream source) { bool isHeader = true; var cows = new List<Cow>(); using (var reader = new StreamReader(source)) { while (!reader.EndOfStream) { var line = reader.ReadLine(); if (line != null) { var values = line.Split(','); if (isHeader && values.Contains("Weight") && values.Contains("Age")) { isHeader = false; } else { cows.Add(new Cow( weight: values[0], age: values[1])); } } } } return animals; }示例 CSV:Weight,Age300,10319,11100,1370,9在这种情况下,输出将是List<Cow>第一个条目的值为 "Weight": "300" 和 "Age": "10" 显然,但如果 "Weight" 和 "Age" 颠倒怎么办?然后我会将错误的值分配给错误的变量。基本上,我想用头确定是否将values[0]进入weight或age等,我想我不能保证这是第一位的,我读了CSV。
3 回答
繁星淼淼
TA贡献1775条经验 获得超11个赞
您可以存储标题索引,例如:
int weightIndex = Array.FindIndex(values, v => v == "Weight");
int ageIndex = Array.FindIndex(values, v => v == "Age");
然后按如下方式访问值:
cows.Add(new Cow(
weight: values[weightIndex],
age: values[ageIndex]));
- 3 回答
- 0 关注
- 131 浏览
添加回答
举报
0/150
提交
取消