【问题标题】:ShouldQuote putting quotes around all fields in a row instead just the ones I needShouldQuote 将引号放在一行中的所有字段周围,而不是我需要的那些
【发布时间】:2020-05-20 23:54:36
【问题描述】:

我只想在日期字段周围加上引号,而不是其他字段。 我写了一个函数传递给ShouldQuote,如果字段是日期时间,则返回true。但它在行中的每个字段周围加上引号。我单步执行了代码并验证了从我的函数返回的结果是否为假,但该字段周围仍然有引号。我做错了什么还是这应该是 ShouldQuote 的预期功能?

private bool ShouldQuote(string field, WritingContext context)
{
   DateTime date;
   var result = DateTime.TryParseExact(field, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
   return result;
}
var config = new Configuration();
config.ShouldQuote = ShouldQuote;

【问题讨论】:

  • 检查config.QuoteAllFields是否为真?从表面上看,你所拥有的看起来还不错。

标签: c# csvhelper


【解决方案1】:

您使用的是早期版本的 CsvHelper 吗?当前版本为 15.0.5,您需要 CsvConfiguration

class Program
{
    static void Main(string[] args)
    {
        var records = new List<Foo>
        {
            new Foo { Id = 1, Name = "Quinn", Date = "05/20/2020" }
        };

        var config = new CsvConfiguration(CultureInfo.InvariantCulture)
        {
            ShouldQuote = ShouldQuote
        };

        using (var csv = new CsvWriter(Console.Out, config))
        {
            csv.WriteRecords(records);
        }

        Console.ReadKey();
    }

    private static bool ShouldQuote(string field, WritingContext context)
    {
        DateTime date;
        var result = DateTime.TryParseExact(field, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out date);
        return result;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 2022-12-03
    • 1970-01-01
    • 2014-09-06
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    • 2018-08-03
    相关资源
    最近更新 更多