为了账号安全,请及时绑定邮箱和手机立即绑定

C# 使用 CSV 标头为不同的变量赋值

C# 使用 CSV 标头为不同的变量赋值

C#
MYYA 2021-07-01 14:00:08
我正在阅读一个 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]));


查看完整回答
反对 回复 2021-07-10
  • 3 回答
  • 0 关注
  • 131 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信