技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

C# CSV解析器TinyCsvParser使用示例:解析枚举

作者:admin    时间:2023-5-22 11:27:39    浏览:

在上一文中,我介绍了C# CSV解析器TinyCsvParser使用示例:解析自定义格式,在本文中,我将继续介绍C# CSV解析器TinyCsvParser使用示例:解析枚举。

你还可以参阅以下文章,看看TinyCsvParser其他使用示例。

解析枚举

有时需要将 CSV 数据解析为枚举,这可以通过EnumConverter

例子

想象一下,我们有一个包含车辆的 CSV 文件,该文件具有 NameVehicleTypeVehicleType 只能是一个 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更多使用示例。

相关文章

标签: asp.net  CSharp  CSV  TinyCsvParser  
x
  • 站长推荐
/* 左侧显示文章内容目录 */