Ja, das ist genau das, was ich tun würde. Wenn Sie nicht LINQ haben, können Sie generische Liste mit einer benutzerdefinierten Klasse von Ihrem eigenen verwenden.
public class LogEntry
{
private String _source = String.Empty;
private String _destination = String.Empty;
private String _result = String.Empty;
private String _time = String.Empty;
public String Source
{
get { return _source; }
set { _source = value; }
}
public String Destination
{
get { return _source; }
set { _source = value; }
}
public String Result
{
get { return _source; }
set { _source = value; }
}
public String Time
{
get { return _source; }
set { _source = value; }
}
public LogEntry()
{
}
public LogEntry( String source, String destination, String result, String time )
{
_source = source;
_destination = destination;
_result = result;
_time = time;
}
public LogEntry( String[] args )
{
_source = args[0];
_destination = args[1];
_result = args[2];
_time = args[3];
}
}
Sie können dann eine Liste wie diese verwenden:
List<LogEntry> _logEntries = new List<LogEntry>();
Ich würde jede Zeile aus der Datei in einen String einlesen und eine neue LogEntry-Klasse erstellen, die das Ergebnis eines String.Split-Methodenaufrufs enthält. Der folgende Code ist ein reiner Pseudo-Code.
char[] splitter = new char[1];
splitter[0] = ' ';
while( readLines into String )
{
_logEntries.Add( new LogEntry( String.Split( splitter ) ) );
}
Diese Lösung ist extrem brüchig, und jede Änderung des Protokolldateiformats führt zu einem Bruch des Codes, aber sie funktioniert. Auch Ihr brechen auf Leerzeichen, so dass Sie besser sicherstellen, dass das ist, was Sie wirklich auf zu brechen wollen.