2014-05-23 94 views
0

我有一個csv文件,這個文件的開始和結束是垃圾,我不需要。閱讀2點之間的csv文件

我使用玲讀取文件

string startingline="start"; 
string endline="end"; 

var lines = File.ReadLines(myFile, Encoding.Default) 
    .Skip(1) 
    .Select(line => line.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries)).ToList(); 

考慮到我有一個開始讀取和停止讀取 我怎麼能得到的只有那就是這兩條線之間的文本?

有什麼建議嗎?

修訂與文檔的樣本:

start 

Name,Surname,City,Country 

jo,Bloggs,London,Uk, 

Name,Surname,City,Country 


Mark,Smith,Paris,France, 

end 

我管不着這個文件

回答

1

你必須結合在Skip/SkipWhileTake/TakeWhile

var lines = File.ReadLines("Path", Encoding.Default) 
     .SkipWhile(l => l.Trim() != "start").Skip(1) 
     .TakeWhile(l => l.Trim() != "end") 
     .Select(line => line.Split(new[] { " " }, StringSplitOptions.RemoveEmptyEntries)) 
     .ToList(); 

我用Skip(1)背後SkipWhile省略線"start",因爲你想要的行之間

+0

您可以嘗試使用'SkipUntil(l => l.Trim()==「start」)''而不需要'.Skip(1)'。 'new [] {1,2,3,4} .SkipUntil(x => x == 2)'返回'3,4'。 'SkipUntil'來自[MoreLINQ](https://code.google.com/p/morelinq/source/browse/MoreLinq/SkipUntil.cs?r=ff61e76ceb312f5e9251739f80caef48173551d9) –

+0

@IlyaIvanov:imho對MoreLinq有比這更好的理由方法。我發現'跳過(1)'足夠可讀。 –

+0

同意,使用MoreLINQ有一個**巨大的理由。這只是一個小小的。 –