使用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 forThoseWhoHave1GigFiles = new List(); 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 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