簡體   English   中英

如何使用 csvhelper c# 從 csvfile 中解析特定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM