Questo sembra un layout di tipo CSV piuttosto semplice, che è abbastanza facile da elaborare. È possibile farlo effettivamente con ADO.Net e con il provider Jet, ma penso che probabilmente sia più facile a lungo termine elaborarlo da solo.
Quindi, per prima cosa, si desidera elaborare i dati di testo effettivi. Suppongo che sia ragionevole assumere ogni record è separato da qualche carattere di nuova linea, in modo da poter utilizzare il metodo ReadLine di raggiungere facilmente ogni record:
StreamReader reader = new StreamReader("C:\Path\To\file.txt")
while(true)
{
var line = reader.ReadLine();
if(string.IsNullOrEmpty(line))
break;
// Process Line
}
E poi per elaborare ogni riga, è possibile dividere la stringa in virgola e memorizza i valori in una struttura dati.Quindi, se si utilizza una struttura di dati come questo:
public class MyData
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Balance { get; set; }
public DateTime Date { get; set; }
}
E si può elaborare i dati di linea con un metodo come questo:
public MyData GetRecord(string line)
{
var fields = line.Split(',');
return new MyData()
{
Id = int.Parse(fields[0]),
Name = fields[1],
Balance = decimal.Parse(fields[2]),
Date = DateTime.Parse(fields[3])
};
}
Ora, questo è l'esempio più semplice, e non lo fa conto per i casi in cui i campi potrebbero essere vuoti, nel qual caso sarà necessario supportare NULL per tali campi (utilizzando i tipi nullable int ?, decimal? e DateTime?) o definire un valore predefinito che verrebbe assegnato a tali valori.
Quindi, una volta che avete, è possibile memorizzare la raccolta di oggetti MyData in un elenco e facilmente eseguire calcoli basati su questo. Quindi, dato il vostro esempio di trovare l'equilibrio in una determinata data si potrebbe fare qualcosa di simile:
var data = customerDataList.First(d => d.Name == customerNameImLookingFor
&& d.Date == dateImLookingFor);
Dove customerDataList
è la raccolta di MyData
oggetti leggere dal file, customerNameImLookingFor
è una variabile che contiene il nome del cliente, e customerDateImLookingFor
è una variabile contenente la data.
Ho usato questa tecnica per elaborare i dati in file di testo in passato per file che vanno da un paio di record, a decine di migliaia di record, e funziona piuttosto bene.
Quanto è grande il file e lo è o derubato in alcun modo? –
Sarebbe ordinato per data. La dimensione potrebbe essere di 3MB – tpow
@cinqoTimo - E farai più ricerche su di esso? –