【发布时间】:2021-06-16 10:53:34
【问题描述】:
我使用 c# 为我的程序创建了两个类,第一个“PayRecordSettings”读取一个包含 5 列的 CSV 文件(使用 CSV 帮助程序)。第二个类“createPayRecord”应该获取列表并为每一列创建一个子列表。我设法读取了 CSV 文件并从 Main 调用它并显示数据,但我还没有弄清楚如何获取数据并将其传递给其他类。这是我的代码
public class CsvImporter
{
public static List<PayRecordSettings> ImportPayRecords()
{
using (var path = new StreamReader("C:\\Users\\Import\\data.csv"))
{
using (var csvRead = new CsvReader(path, CultureInfo.InvariantCulture))
{
csvRead.Context.RegisterClassMap<CsvSettingsMap>();
var PayRecord = csvRead.GetRecords<PayRecordSettings>().ToList();
return PayRecord;
}
}
}
public static List<PayRecordSettings> createPayRecord()
{
foreach (PayRecordSettings details in payRecords)
{
Console.WriteLine(details.Hours + " hours" + details.Rate);
}
return ImportPayRecords;
}
}
public class CsvSettingsMap : ClassMap<PayRecordSettings>
{
public CsvSettingsMap()
{
Map(m => m.EmployeeId).Name("EmployeeId");
Map(m => m.Hours).Name("Hours");
Map(m => m.Rate).Name("Rate");
Map(m => m.Visa).Name("Visa");
Map(m => m.YearToDate).Name("YearToDate");
}
}
public class PayRecordSettings
{
public int EmployeeId { get; set; }
public double Hours { get; set; }
public double Rate { get; set; }
public string Visa { get; set; }
public string YearToDate { get; set; }
}
有没有办法让空单元格等于0?
我已经根据 Fildor cmets 更新了我的代码。我必须报告它的大部分工作。当有一个空单元格时,CSV Helper 设置没有添加 0。我还有另一个问题,来自 PayRecordsettings 方法,一旦我调用了列表,如何将其存储在新的子列表中?如果我有 5 个变量,我想将完整的 CSV 列存储在一个新列表中。
public static List<PayRecordSettings> createPayRecord()
{
var payRecords = ImportPayRecords();
foreach (PayRecordSettings details in payRecords)
{
Console.WriteLine(details.Hours);
}
return payRecords;
} /* I would like to create a new list of Employee
list of Hours
【问题讨论】:
-
这还能编译吗?
ImportPayRecords是一种方法,但用作属性。顺便说一句,也许 PayRecordSettings 应该是record -
Bit OT:重新考虑你的命名。想想不知道你的代码/程序的人。所以命名你的东西,这个人可以尽快理解代码的作用。我读了你的第一行,你说的是:我建立了一个 CSV 导入器。但我认为数据来自 CSV 的事实与程序的功能无关。
-
您的描述与您的代码不匹配:“第一个“PayRecordSettings”读取和 CSV 文件” - 不,它不匹配。 "第二个类 "createPayRecord" " - Tat 不是一个类。
-
“有没有办法让空单元格等于 0?” CSVHelper 的记录行为是什么?你能注释模型属性吗?
-
你能帮忙minimal reproducible example吗?另外,请告诉我们您正在使用哪些软件包,以便我们运行您的代码。