Wie Sie sehen können, ich versuche, ein Wörterbuch mit einem dynamischen Array von dynamischen Arrays zu initialisieren. Kann mir jemand einen saubereren Weg geben? Es muss einen Weg geben, dies mit einer for-Schleife zu tun.C# Initialize Dictionary enthält dynamische Array von dynamischen Arrays
// Sizes: 20X, 40X, W, M, WM, Other
sizesDict.Add(eDate, new dynamic[6] { // Date, Size
new dynamic[6] { // Data
/* RangeMax */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* RangeMin */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* OriginMax */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* OriginMin */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* DestinationMax */
new List<string> { r.destinationLoc.LocationName.ToString() },
/* DestinationMin */
new List<string> { r.destinationLoc.LocationName.ToString() }
},
new dynamic[6] { // Data
/* RangeMax */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* RangeMin */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* OriginMax */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* OriginMin */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* DestinationMax */
new List<string> { r.destinationLoc.LocationName.ToString() },
/* DestinationMin */
new List<string> { r.destinationLoc.LocationName.ToString() }
},
new dynamic[6] { // Data
/* RangeMax */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* RangeMin */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* OriginMax */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* OriginMin */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* DestinationMax */
new List<string> { r.destinationLoc.LocationName.ToString() },
/* DestinationMin */
new List<string> { r.destinationLoc.LocationName.ToString() }
},
new dynamic[6] { // Data
/* RangeMax */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* RangeMin */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* OriginMax */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* OriginMin */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* DestinationMax */
new List<string> { r.destinationLoc.LocationName.ToString() },
/* DestinationMin */
new List<string> { r.destinationLoc.LocationName.ToString() }
},
new dynamic[6] { // Data
/* RangeMax */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* RangeMin */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* OriginMax */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* OriginMin */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* DestinationMax */
new List<string> { r.destinationLoc.LocationName.ToString() },
/* DestinationMin */
new List<string> { r.destinationLoc.LocationName.ToString() }
},
new dynamic[6] { // Data
/* RangeMax */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* RangeMin */
new List<decimal> { r.rateEvalDLoc.rateEvalOLoc.charge.Total },
/* OriginMax */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* OriginMin */
new List<string> { r.rateEvalDLoc.originLoc.LocationName.ToString() },
/* DestinationMax */
new List<string> { r.destinationLoc.LocationName.ToString() },
/* DestinationMin */
new List<string> { r.destinationLoc.LocationName.ToString() }
}
});
Warum verwenden Sie sogar 'dynamic'? Sie könnten dafür starke Typen erstellen und Ihrem Code die Typsicherheit hinzufügen. Außerdem fügen Sie in jedem Array die gleichen Werte 2x hinzu UND jedes Array ist ein exaktes Duplikat des vorherigen (sie sind alle gleich). Schließlich warum verwenden Sie Listen für einzelne Werte, warum nicht einfach 'string' oder' decimal' anstelle von 'List' und 'List ' '? –
Igor
Werden die innersten dynamischen Arrays immer mit den gleichen Werten initialisiert, wie Sie es sehen? – gunnerone