作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
一直在使用 CsvHelper 6.0.0 版,决定升级到最新版本(当前为 12.3.2)并发现它使用另一个参数,即 csv.Configuration.PrepareHeaderForMatch
的 lambda 中的索引| , ( Func<string,int,string>
)。
v6.0.0 的代码如下所示:
csv.Configuration.PrepareHeaderForMatch = header => Regex.Replace(header, @"\/", string.Empty);
IReadingContext.Record
返回一个包含多条记录的数组,每列一个。
csv.Configuration.PrepareHeaderForMatch = (header, index) => Regex.Replace(header, @"\/", string.Empty);
ReadingContext.Record
现在返回一个数组,其中所有列都在一个记录中。两个版本使用完全相同的文件。尝试弄乱 lambda,但结果是一样的。如何获取
Records
中的列大批?
最佳答案
更新 - 这是自 6.0.0 版以来已更改的分隔符的问题。默认分隔符现在使用 CultureInfo.CurrentCulture.TextInfo.ListSeparator
.由于我在美国,我的ListSeparator
是 ,
所以这两个例子都对我有用。对于许多国家,ListSeparator
是 ;
这就是为什么在版本 12.3.2 中只为 @dzookatz 找到了 1 列。解决方法是在配置中指定分隔符。
csv.Configuration.PrepareHeaderForMatch = header => Regex.Replace(header, @"\/", string.Empty);
csv.Configuration.Delimiter = ",";
var record
无论是使用版本 6.0.0 还是 12.3.2。我猜你的数据还有更多我没有看到的。
class Program
{
static void Main(string[] args)
{
var fooString = $"Id,First/Name{Environment.NewLine}1,David";
using (var reader = new StringReader(fooString))
using (var csv = new CsvReader(reader))
{
csv.Configuration.PrepareHeaderForMatch = header => Regex.Replace(header, @"\/", string.Empty);
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var record = csv.Context.Record;
}
}
}
}
public class Foo
{
public int Id { get; set; }
public string FirstName { get; set; }
}
public class Program
{
public static void Main(string[] args)
{
var fooString = $"Id,First/Name{Environment.NewLine}1,David";
using (var reader = new StringReader(fooString))
using (var csv = new CsvReader(reader))
{
csv.Configuration.PrepareHeaderForMatch = (header, index) => Regex.Replace(header, @"\/", string.Empty);
csv.Read();
csv.ReadHeader();
while (csv.Read())
{
var record = csv.Context.Record;
}
}
}
}
public class Foo
{
public int Id { get; set; }
public string FirstName { get; set; }
}
关于c# - CsvHelper PrepareHeaderForMatch 将 Context 作为一项数组返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59718524/
一直在使用 CsvHelper 6.0.0 版,决定升级到最新版本(当前为 12.3.2)并发现它使用另一个参数,即 csv.Configuration.PrepareHeaderForMatch 的
我是一名优秀的程序员,十分优秀!