gpt4 book ai didi

c# - 将数据从 CSVReader 传递到循环内的方法

转载 作者:太空宇宙 更新时间:2023-11-03 11:58:10 25 4
gpt4 key购买 nike

我有一个包含以下数据的 CSV

month,year,speed
12,2010,76
2,2000,45
12,1940,30

我正在使用读取它的第 3 方加载。简而言之,它是一个 CSVReader 类,能够像这样从名为 input 的文件中获取数据

List<Dictionary<string, object>> data = CSVReader.Read("input");

然后,使用 for 循环,我能够以这种方式检索数据

for(var i=0; i < data.Count; i++) {
print ("month" + data[i]["month"] + " " +
"year" + data[i]["year"] + " " +
"speed " + data[i]["speed"]);
}

除了 for 循环内部,我想将每年和每月(一个接一个)传递给另一个函数,该函数将类似 double (不是对象)的东西作为参数,我不知道如何

for(var i=0; i < data.Count; i++) {
// Get month and year
function(month, year);
}

最佳答案

如果我正确解释了这一点并且您的问题是:“如何将 object 类型的值传递给采用 double 类型参数的函数?”,那么你可以:
1)投值像这样:

for (var i = 0; i < data.Count; i++) {
double month = (double)data[i]["month"];
// Same for year.
function(month, year);
}

请注意,如果您正在转换的值无法转换为目标类型(即,您正在读取的 csv 包含一些损坏的行),这将导致抛出异常。如果你确定这不会是问题,你可以这样做,但是,如果你想确定,你可以选择选项 2,它是
2) 使用 as 运算符像这样:

for (var i = 0; i < data.Count; i++) {
double? month = data[i]["month"] as double?;
if (!month.HasValue) {
Console.WriteLine($"Month value on line {i + 1} is corrupted; Skipping...");
break;
}
// Same for year.
function(month.Value, year.Value);
}

在这种情况下,如果值不是double 类型,则month 将被赋予null 值(这就是为什么我们使用可为 null 的 double? 类型)。这使您可以检查转换是否成功,而无需处理可能的异常。

关于c# - 将数据从 CSVReader 传递到循环内的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58570093/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com