如何忽略某些属性及其下的所有内容?

问题描述 投票:0回答:1

所以我试图解析如下的某个csvfile:

no header values here


(still no header)

Header1,Header2,Header3 |   Just trying to get these values
1,2,3                   |
4,5,6                   V
_________
(values that I'd like to ignore here) 

我最近通过实现csv.Read()找出了如何一直跳到标题开始的位置。对于这些值,我想要获取的只是从Header1行一直向下到4的位置。

但是,我苦苦挣扎的一件事是,我不知道如何忽略“ _____”行及其下的所有内容。我打算做的一件事是调用忽略空白行选项,然后将其设置为“ _”以忽略它。有没有一种更有效的方法,例如我可以说如果值与标题属性和格式不匹配,则忽略这些值,并将其应用于忽略该行下面的所有内容?

c# csv parsing csvhelper
1个回答
0
投票

您可以使用linq尝试下面的代码,

        var file = File.ReadAllLines(@"Your File Path")
                     .Where(a => !a.Equals(String.Empty))
                     .Select((a, i) => new { Data = a, RowNumber = i })
                     .ToList();
        var ignoreRowNo = file.Where(a => a.Data.Contains("_"))
                            .Select(a => a.RowNumber)
                            .OrderBy(a => a)
                            .Take(1).ToList();
        var result = file.Where(a => a.RowNumber < ignoreRowNo[0])
                       .Select(a => a.Data.Split(','))
                       .ToList();

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.