我有以下文本文件:
37 44 60
67 15 94
45 02 44
Run Code Online (Sandbox Code Playgroud)
如何使用LINQ读取此文件中的所有数字并将它们保存为二维数组?我要做的就是创建一个包含每行中所有第一个值的简单数组.在这种情况下使用LINQ是一个好主意还是我应该只是正常加载文件并解析它?
Yur*_*ich 12
File.ReadAllLines(myFile)
.Select(l => l.Split(' ').Select(int.Parse).ToArray()).ToArray();
Run Code Online (Sandbox Code Playgroud)
要么:
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();
Run Code Online (Sandbox Code Playgroud)
和:
File.ReadLines(myFile)
.Select(l => l.Split(' ')
.Select(int.Parse).ToArray())
.ToArray();
Run Code Online (Sandbox Code Playgroud)
在.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;
}
}
Run Code Online (Sandbox Code Playgroud)