[英]How to parse a specific value out of a csvfile uising csvhelper c#
我正在嘗試使用 csvHelper 解析某個 csvFile。 該文件構成如下:
value: 333_345, nextval: 5578
val, 1val
200, 300
這個 csv 文件的獨特之處在於該行(值:333_345,nextval:5578)不是標題,並且真正的標題直到行(val,1val)才開始
我知道到達標題(val,1val)我可以調用跳過記錄 function 一直跳到那里。 我的問題是,我如何能夠從第一行獲取值?
特別是這些(值:333_345,nextval:5578)
到目前為止,我嘗試過的是:
using (StreamReader reader = new StreamReader(@"path"))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
csv.Configuration.RegisterClassMap<FooMap>();//necessary for mapping
csv.Read();
var records = csv.GetField(0);
}
.
.
.
public class Foo
{
[Index(0)]
public string value { get; set; }
}
public class FooMap : ClassMap<Foo>
{
public FooMap()
{
Map(m => m.value).Index(0);
}
}
有了這個,通過將索引設置為 [0],我得到了第一行,但它以水平字符串形式提供給我:
v
a
l
u
e
:
3
3
3
_
3
4
5
我該怎么做才能返回(333_345)?
您不需要同時使用屬性和 class 映射。 如果使用屬性映射,則不需要注冊 class map。
void Main()
{
var s = new StringBuilder();
s.AppendLine("value: 333_345, nextval: 55578");
s.AppendLine();
s.AppendLine();
s.AppendLine("val, 1val");
s.AppendLine("200, 300");
using (var reader = new StringReader(s.ToString()))
using (var csv = new CsvReader(reader, CultureInfo.InvariantCulture))
{
csv.Read();
var val = csv.GetField(0);
var nextval = csv.GetField(1);
csv.Read();
csv.ReadHeader();
var records = csv.GetRecords<Foo>().ToList();
records.Dump();
}
}
public class Foo
{
[Index(0)]
public string Value { get; set; }
[Index(1)]
public string Value1 { get; set; }
}
注意: Dump()
是輸出變量的 LINQPad 擴展。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.