2016-03-20 4 views
-2

Ich habe ein Array UsedCars genannt [10,5]Wie abfragen Array in muliti-Bedingungen C#

Und es ist Daten

Car Brand  Car Color Quantity 
Alfa Romeo   Red   5 
Dodge    Blue  1 
Ferrari   Yellow  12 
Dodge    Blue  3 
Alfa Romeo   Red   5 
Dodge    Red   18 

ich möchte die Summe jeder Automarke wie

sieht das ist in der gleichen Farbe führen So

Alfa Romeo   Red   10 
Dodge    Blue  4 
Ferrari   Yellow  12 
Dodge    Red   18 

Meine Idee von der UsedCars Array alle diese Daten sein müssen, in eine Datentabelle fügt dann mache ich eine Schleife über alle Zeilen in der Datentabelle ein qu zu machen ery (select) auf jeder Zeile und vergleichen Sie seine Daten zu summieren die Menge und setzen sie alle wieder die Datatable

Jeder kurze Weg zur Verringerung der Nutzung von Ressourcen und Laufzeit?

+2

Do die tatsächliche Erklärung Ihres Arrays beinhalten:


Das resultierende Wörterbuch kann wie folgt verwendet werden! - Vielleicht möchten Sie in LINQ schauen. – TaW

Antwort

0

Ich habe versucht, eine gute LINQ-Implementierung für Sie zu finden, aber es scheint sehr hart multidimensionalen Arrays (object[,]) mit LINQ zu kombinieren, weil die enumerator Iterierten vorgesehen über jede einzelne „Zelle "des Arrays.

Also ich denke, ein besserer Ansatz ist es, die Mengen in einem Wörterbuch wie folgt hinzuzufügen:

Dictionary<string, Dictionary<string, int>> usedCars = new Dictionary<string, Dictionary<string, int>>(); 
for(int i=0; i<UsedCars.GetLength(0); i++) 
{ 
    string brand = UsedCars[i, 0].ToString(); 
    string color = UsedCars[i, 1].ToString(); 
    int quantity = (int)UsedCars[i,2]; 

    if (!usedCars.ContainsKey(brand)) 
     usedCars.Add(brand, new Dictionary<string, int>()); 

    if (usedCars[brand].ContainsKey(color)) 
     usedCars[brand][color] += quantity; 
    else 
     usedCars[brand][color] = quantity; 
} 

Ich gehe davon aus, dass die Marke, Farbe und Menge Sie hat uns gezeigt, sind die ersten drei „Zellen“ pro „row "in Ihrem object[10,5] Array.

Console.WriteLine($"Quantity of yellow ferraris: {usedCars["Ferrari"]["Yellow"]}");