你会认为有一种方法可以使用DirectCast,TryCast,CType等,但所有这些似乎都扼杀了它,例如:
CType("Yes", Boolean)
Run Code Online (Sandbox Code Playgroud)
你得到:
System.InvalidCastException - 从字符串"Yes"到"Boolean"类型的转换无效.
我必须使用(即我无法控制)csv文件,其中“ N / A”是“应该”为整数的字段的可能值,并且我一直在尝试找出如何“滚动自己的” TypeConversion类来处理此问题,但未能找到示例。Josh的例子页面在这一特定领域明显缺乏和最近的计算器的问题,我已经能够找到的是这个从2013年。
然后,我找到了对NullValuesAttribute的引用,这似乎正是我所需要的,但是后来却不知道如何使用它。VisualStudio的Intellisense也无济于事。:)
理想情况下,我希望将“ N / A”转换为0(零)。有人可以帮忙吗?
在人们告诉我“好吧,很明显...”之前,我应该说这是我的第一个C#程序(从字面上讲,除了教程),而且还有一个时间因素-否则我会很开心地自己探索。
[更新:在CsvHelper中尝试了顶级自适应解决方案,从String解析布尔值 ]
因此,以上述问题的解决方案为起点,我这样做了:
static void Main()
{
var rows = new List<Job>();
using (var reader = new StreamReader("mydatafile.csv")
using (var csv = new CsvReader(reader))
{
csv.Configuration.RegisterClassMap<JobMap>();
while (csv.Read())
{
var record = new Job
{
JobId = csv.GetField<int>("Job ID"),
ItemCount = csv.GetField<int>("Item Count")
};
rows.Add(record);
}
}
}
public class Job
{
public int JobId { get; set; }
public int ItemCount { get; …Run Code Online (Sandbox Code Playgroud)