任何人都可以解释如何从LINQ中的文本文件中读取前10行。
使用StreamReader的代码:
using (var reader = new StreamReader(fileName))
{
string ListLines = "";
for (int i = 0; i < 10; i++)
{
ListLines[i] = reader.ReadLine();
}
}
return ListLines;
答案 0 :(得分:10)
您可以使用:
var lines = File.ReadLines(path).Take(10));
使用ReadLines
而不是ReadAllLines
,您将从文件中流式传输数据,而不是将整个内容读入内存。如果您仍然使用C#3.5,而不是4(当添加ReadLines
时),您可以使用以下实现:
public static IEnumerable<string> ReadLines(string filename)
{
using (TextReader tr = new StreamReader(filename))
{
string nextLine = tr.ReadLine();
while (nextLine != null)
{
yield return nextLine;
nextLine = tr.ReadLine();
}
}
}
答案 1 :(得分:5)
您的代码已经达到目标的最佳状态:
var list = new List<string>();
using (var reader = new StreamReader(fileName))
{
for (int i = 0; i < 10; i++)
{
list.Add(reader.ReadLine());
}
}
return list;
或
using (var reader = new StreamReader(fileName))
{
for (int i = 0; i < 10; i++)
{
yield return reader.ReadLine();
}
}
或
var r = File.ReadLines(fileName)
.Take(10) // limit to first 10
.ToArray(); // materialize, if needed
答案 2 :(得分:4)
LINQ风格:
using (var textReader = File.OpenText(fileName))
{
return Enumerable.Range(1, 10).Select(i => textReader.ReadLine());
}
答案 3 :(得分:-1)
愿你对这种混合感兴趣:)
using (var reader = new StreamReader(filename))
{
return (from p in Enumerable.Range(0, 10) select reader.ReadLine()).ToList();
}