C# CSV解析器TinyCsvParser使用示例:解析枚举
作者:admin 时间:2023-5-22 11:27:39 浏览:在上一文中,我介绍了C# CSV解析器TinyCsvParser使用示例:解析自定义格式,在本文中,我将继续介绍C# CSV解析器TinyCsvParser使用示例:解析枚举。
你还可以参阅以下文章,看看TinyCsvParser其他使用示例。
解析枚举
有时需要将 CSV 数据解析为枚举,这可以通过EnumConverter
。
例子
想象一下,我们有一个包含车辆的 CSV 文件,该文件具有 Name
和 VehicleType
。VehicleType
只能是一个 Car
或 一个 Bike
。
VehicleType;Name
Car;Suzuki Swift
Bike;A Bike
在我们的 C# 代码中将 VehicleType
表示为枚举很有用,所以首先在代码中定义enum
:
private enum VehicleTypeEnum
{
Car,
Bike
}
然后定义结果应映射到的类:
private class Vehicle
{
public VehicleTypeEnum VehicleType { get; set; }
public string Name { get; set; }
}
现在必须定义 CSV 文件和域模型之间的映射。为了解析VehicleType
必须使用自定义转换器,它只是一个EnumConverter<VehicleTypeEnum
,构造函数参数发出信号以忽略解析枚举的大小写(大写/小写)。
private class CsvVehicleMapping : CsvMapping<Vehicle>
{
public CsvVehicleMapping()
{
MapProperty(0, x => x.VehicleType, new EnumConverter<VehicleTypeEnum>(true));
MapProperty(1, x => x.Name);
}
}
然后可以像往常一样解析 CSV 数据:
[Test]
public void CustomEnumConverterTest()
{
CsvParserOptions csvParserOptions = new CsvParserOptions(true, ';');
CsvReaderOptions csvReaderOptions = new CsvReaderOptions(new[] { Environment.NewLine });
CsvVehicleMapping csvMapper = new CsvVehicleMapping();
CsvParser<Vehicle> csvParser = new CsvParser<Vehicle>(csvParserOptions, csvMapper);
var stringBuilder = new StringBuilder()
.AppendLine("VehicleType;Name")
.AppendLine("Car;Suzuki Swift")
.AppendLine("Bike;A Bike");
var result = csvParser
.ReadFromString(csvReaderOptions, stringBuilder.ToString())
.ToList();
Assert.AreEqual(VehicleTypeEnum.Car, result[0].Result.VehicleType);
Assert.AreEqual("Suzuki Swift", result[0].Result.Name);
Assert.AreEqual(VehicleTypeEnum.Bike, result[1].Result.VehicleType);
Assert.AreEqual("A Bike", result[1].Result.Name);
}
是不是很容易?
总结
本文介绍了C# CSV解析器TinyCsvParser使用示例:解析枚举,你还可以通过以下文章参阅TinyCsvParser更多使用示例。
相关文章
相关文章
x
- 站长推荐