Lies die ersten 10 Zeilen von Datei mittels LINQ
Kann mir jemand erklären, wie das Lesen der ersten 10 Zeilen aus der text-Datei in LINQ.
Code mit StreamReader:
using (var reader = new StreamReader(fileName))
{
string ListLines = "";
for (int i = 0; i < 10; i++)
{
ListLines[i] = reader.ReadLine();
}
}
return ListLines;
- Haben Sie versucht, noch nichts? Post-it-up, so können wir schauen und dir helfen.
- Was haben Sie versucht? (Es ist sehr einfach, aber es klingt wie es kann gut sein, Hausaufgaben, und Sie haben nicht gegeben, jede Angabe der putting Mühe in. Wenn Sie mehr Informationen über das, was Sie versucht haben, ich bin sicher, Sie bekommen hilfreiche Antworten.)
- ich habe versucht mit C# StreamReader aber ich möchte wissen, ob es möglich ist mit LINQ oder nicht.
- Dies könnte helfen,; stackoverflow.com/questions/1271225/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code ist schon optimal, das Ziel zu erreichen:
oder
oder
ToArray()
dannKönnen Sie verwenden:
Mithilfe
ReadLines
eher alsReadAllLines
Sie stream-Daten aus der Datei, sondern als das Lesen die ganze Sache in Erinnerung. Wenn du noch auf C# 3.5, nicht 4 (wennReadLines
Hinzugefügt wurde) können Sie die unten Durchführung:Take
nennen, es wird am Ende nur das Lesen der ersten 10 Zeilen. Eine einfache Möglichkeit, um dies zu zeigen, ist die Verwendung meiner Methode, und fügen Sie eineConsole.WriteLine
nach jeder Zeile Lesen und sehen Sie, wie viele Zeilen am Ende wird gedruckt.ToArray
oderToList
es sofort zu Lesen in alle Daten. Für nur 10 Zeilen, das wäre wünschenswert. Alternativ ist es wahrscheinlich, dass Sie würde die ganze Sache in einforeach
Schleife. Das würde bedeuten, dass nicht mehr als eine Zeile braucht, um im Gedächtnis in der gleichen Zeit. Wenn Sie die Verarbeitung einer sehr großen Datenmenge, das könnte eine Anforderung. Wenn Sie das tun, obwohl, Sie sind richtig, dass die Datei gesperrt werden, während der Verarbeitung stattfindet.IEnumerable<string>
ohne zu erwähnen, ein interessanter Aspekt. Wenn Sie Durchlaufen die IEnumerable mehrere Male, es wird wieder zu öffnen, und gehen Sie den Datei-Linien jedes mal, je nach Ihren Bedürfnissen kann es sich entweder wirklich wünschenswert (z.B. tailing eine log-Datei) oder wirklich ärgerlich. Nette Antwort.LINQ-Stil:
Take
ist in Ordnung, solange Sie die Einnahme von etwas, das verzögert das Lesen der Datei so lange wie möglich, wieReadLines
.using
- block, so wird die Datei geschlossen werden, indem das erste mal, wenn Sie versuchen, eine Zeile Lesen.ReadAllLines
? Ich weiß ich nicht, und ich sehe es nicht als nach von jemand anders in den Kommentaren zu deiner Antwort hier. Ich habe ausdrücklich erwähntReadLines
, die ordentlich verzögert die Ausführung.Können Sie Interesse in diesem mix 🙂