簡體   English   中英

使用Linq讀取CSV

[英]Read CSV with Linq

我在CSV文件中有以下行(更多,但此示例很好)。

Date,Open,High,Low,Close,Volume,Adj Close
2012-11-01,77.60,78.12,77.37,78.05,186200,78.05
2012-10-31,76.96,77.75,76.96,77.47,290700,77.47
2012-10-26,77.30,77.62,76.86,77.36,195100,77.36

我需要對數據執行幾個不同的函數,每個函數只需要一行中的某些字段。 即函數1將需要來自每行的第2和第3組數據,函數2將需要第4組數據。 如何使用LINQ(跳過第一行)?

你可以試試這個: -

            var lines = File.ReadAllLines(@"Linq.csv").Select(x => x.Split(','));
            //Considering each line contains same no. of elements
            int lineLength = lines.First().Count();  
            var CSV = lines.Skip(1)
                       .SelectMany(x => x)
                       .Select((v, i) => new { Value = v, Index = i % lineLength })
                       .Where(x => x.Index == 2 || x.Index == 3)
                       .Select(x => x.Value);
            foreach (var data in CSV)
            {
                Console.WriteLine(data);
            }

腳步:-

步驟1 - 從CSV文件中讀取所有行並用逗號(,)分割它們,這將產生一個帶有每個值的數組os字符串。

第2步 - 跳過第一個數組(持有標題),然后使用SelectMany將列表展平為一個,接下來你需要設置每個集合的索引(在展平列表中)類似,我正在使用Select opertaor ,剩下的最后一件事是過濾和選擇項目。

您可以嘗試下面的函數1代碼

var stuff = from l in File.ReadAllLines(filename)
        let x = l.Skip(1).Split(new [] {',', ' '}, StringSplitOptions.RemoveEmptyEntries)
                 .Select(s => s)
                 .select new
                    {
                      second= s[1],
                      third= s[2]
                    };

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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