簡體   English   中英

使用LINQ從文件中讀取文本數據

[英]Read text data from file using LINQ

我有以下文本文件:

37 44 60
67 15 94
45 02 44

如何使用LINQ讀取此文件中的所有數字並將它們保存為二維數組? 我要做的就是創建一個包含每行中所有第一個值的簡單數組。 在這種情況下使用LINQ是一個好主意還是我應該只是正常加載文件並解析它?

File.ReadAllLines(myFile)
    .Select(l => l.Split(' ').Select(int.Parse).ToArray()).ToArray();

要么:

List<int[]> forThoseWhoHave1GigFiles = new List<int[]>();
using(StreamReader reader = File.OpenText(myFile))
{
    while(!reader.EndOfStream)
    {
        string line = reader.ReadLine();
        forThoseWhoHave1GigFiles.Add(line.Split(' ')
            .Select(int.Parse).ToArray());
    }
}
var myArray = forThoseWhoHave1GigFiles.ToArray();

和:

File.ReadLines(myFile)
    .Select(l => l.Split(' ')
    .Select(int.Parse).ToArray())
    .ToArray();

在.Net 4.0及以上版本。

只是為了完成Jonathan的回答,這里是你如何實現Lines擴展方法:

public static class TextReaderExtensions
{
    public static IEnumerable<string> Lines(this TextReader reader)
    {
        string line;
        while((line = reader.ReadLine()) != null) yield return line;
    }
}

你的意思是這樣的嗎?

StreamReader sr = new StreamReader("./files/someFile.txt");

      var t1 =
        from line in sr.Lines()
        let items = line.Split(' ')
        where ! line.StartsWith("#")
        select String.Format("{0}{1}{2}",
            items[1],
            items[2],
            items[3]);

看一下這個網站: LINK

暫無
暫無

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

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