Sto creando un programma (principalmente solo per divertimento) che mostra i prezzi in tempo reale per i mercati delle corse ippiche e i prezzi che diversi modelli prevedono che dovrebbero essere. Sono molto interessato al modo ottimale di strutturare questo tipo di dati.
Ho bisogno di un Dictionary<int, (something)>
per memorizzare <raceId, data>
dove la chiave (raceId) è un numero che ho generato (per eliminare le vecchie razze dal dizionario quando la corsa è finita). Le vales (dati) sono costituite dai prezzi effettivi per ciascuna selezione nella gara e dai prezzi di 3 modelli separati corrispondenti a ciascuna selezione.
Il dizionario conterrà 20-60 gare a seconda del tempo.
Ecco un esempio dei dati per ogni razza:
ActualPrice ModelAPrice ModelBPrice ModelCPrice
3.25 3.26 3.29 3.20
5.60 5.63 5.55 5.57
etc.
Il numero di righe è in genere intorno a 40. Alcuni modelli non offrono prezzi per alcune delle righe, ma per ogni prezzo effettivo c'è almeno 1 prezzo del modello.
Inoltre, per ogni corsa dati memorizzo le stringhe per RaceCourse, StartTime, Location, ecc. Inoltre memorizzo marketIds sotto forma di ints, che corrispondono a più righe alla volta (queste sono usate per piazzare le puntate effettive) , ci sono circa 6 marketId per gara.
Stavo usando una classe per memorizzare tutti i dati in chiamati RaceData composti da campi per stringhe (ad esempio RaceCourse, Location), ints (cioè WinMarketId, PlaceMarketId) e doubles (cioè HorseA_ActualPrice, HorseA_ModelAPrice, ecc.). Quindi il mio dizionario è composto da <RaceId, RaceData>
.
Ma mi stavo chiedendo se invece sarebbe stato meglio memorizzare i dati su 3 dizionari.
Dictionary<int, Dictionary<string, string>>
<RaceId, <StringName, StringValue>>
Example of usage: Use RaceId=102313 and StringName="RaceCourse" to get Value="Flemington"
Dictionary<int, Dictionary<string, int>>
<RaceId, <MarketName, MarketId>>
Example of usage: Use RaceId=131231 and MarketName="WinMarket" to get MarketId=1321313
Dictionary<int, Dictionary<string, double>[]>
An array of dictionaries (one for each column of the data).
<RaceId, <RowName, Price>>
Example of usage: Use RaceId=12313 and RowName="HorseAWinPrice" to get Price=3.25
Non sono sicuro che sia necessario un array di dizionari per l'ultimo, poiché potrei semplicemente cambiare le chiavi per avere la colonna in primo piano, ad esempio "ModelA_HorseBWinPrice" o "Actual_HorseBWinPrice". Quale è meglio?
La velocità è una preoccupazione importante quando ho ~ 60 razze e ~ 200 primati per ciascuna. Devo eseguire diversi calcoli di base utilizzando i valori di ciascuna riga per tutte le gare. Devo anche visualizzare il nome / ora della raca in una listbox e, per la voce selezionata nella casella di riepilogo, visualizzare tutti i prezzi sul modulo (in diverse caselle di elenco). Vale la pena notare che ogni listbox corrisponde a un marketId.
Qual è una soluzione migliore o puoi suggerirne una migliore che non ho proposto?